将linq查询转换为icollection

ber*_*gin 8 list icollection

我需要获取查询结果:

 var query = from m in db.SoilSamplingSubJobs where m.order_id == id select m;
Run Code Online (Sandbox Code Playgroud)

并准备作为ICollection,以便我可以有类似的东西

 ICollection<SoilSamplingSubJob> subjobs
Run Code Online (Sandbox Code Playgroud)

目前我创建了一个不符合我需求的列表:

query.ToList();
Run Code Online (Sandbox Code Playgroud)

我该怎么办 - 是query.ToIcollection()?

Jas*_*son 14

列表是ICollection.您可以将query.ToList()代码更改为以下内容.

query.ToList() as ICollection<SoilSamplingSubJob>;
Run Code Online (Sandbox Code Playgroud)

您质疑这个查询是否作为函数结果返回.如果是这种情况,请记住默认情况下Linq to SQL对象已连接,因此您需要管理数据库上下文打开和关闭的位置.或者,您可以创建DTO(数据传输对象),用于保存要在程序的其余部分中使用的数据.这些对象可以任何方式适合您的对象层次结构.

您还可以将这些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>;
Run Code Online (Sandbox Code Playgroud)