преобразование linq запрашивает к icollection

Я должен взять результаты запроса:

 var query = from m in db.SoilSamplingSubJobs where m.order_id == id select m;

и подготовьтесь как ICollection так, чтобы у меня могло быть что-то как

 ICollection<SoilSamplingSubJob> subjobs

в данный момент я создаю список, который не соответствует моим потребностям:

query.ToList();

то, что делает я делаю - является этим запрос. ToIcollection ()?

8
задан Nick VanderPyle 14 December 2012 в 17:39
поделиться

2 ответа

List - это ICollection. Вы можете изменить код query.ToList() на следующий.

query.ToList() as ICollection<SoilSamplingSubJob>;

Ваш вопрос звучит так, будто этот запрос возвращается как результат функции. Если это так, помните, что объекты Linq to SQL подключены по умолчанию, поэтому вам придется управлять тем, где открывается и закрывается контекст вашей базы данных. В качестве альтернативы вы можете создать объекты DTO (Data Transfer Objects), которые хранят данные, которые вы хотите использовать в остальной части вашей программы. Эти объекты могут вписываться в иерархию объектов любым удобным для вас способом.

Вы также можете создать эти DTO как часть запроса.

var query = from m in db.SoilSamplingSubJobs where m.order_id == id
            select new SubJobDTO {
                OrderNumber = m.order_id
            };
return query.ToList() as ICollection<SubJobDTO>;
14
ответ дан 5 December 2019 в 11:22
поделиться

Поскольку запрос реализует IEnumerable, вы можете передать его конструктору коллекции по вашему выбору. ICollection - это интерфейс, реализованный несколькими классами (включая List , который возвращает ToList) с разными характеристиками производительности.

1
ответ дан 5 December 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: