Joe*_*ton 13 c# linq extension-methods properties
我有一个从数据库中提取的查询:
List<myClass> items = new List<myClass>(from i in context
select new myClass
{
A = i.A,
B = "", // i doesn't know this, this comes from elsewhere
C = i.C
}
Run Code Online (Sandbox Code Playgroud)
我还有另一个查询做类似的事情:
List<myClass2> otherItems = new List<myClass2>(from j in context
select new myClass2
{
A = j.A, // A is the intersection, there will only be 1 A here but many A's in items
B = j.B
}
Run Code Online (Sandbox Code Playgroud)
实际上,这些类要大得多,查询数据不仅由数据库而且由服务器分开.是否可以使用LINQ查询为所有itemsitems.A相交的地方填充属性B. 所有内置的LINQ谓词只出现在聚合,选择或bool表达式中.
在我的脑子里,我有类似的东西,但这一切都是关闭的:
items.Where(x => x.B = (otherItems.Where(z => z.A == x.A).Single().B));
Run Code Online (Sandbox Code Playgroud)
或者我试图在LINQ中完成这项工作是荒谬的,应该放弃它而支持for循环,其中实际设置变得微不足道?由于截止日期,我将采用for循环(从长远来看,它可能最终会更具可读性),但是有可能这样做吗?是否需要使用扩展方法来添加特殊谓词以允许此操作?
Jon*_*eet 23
LINQ专为查询而设计.如果你想设置东西,你肯定应该使用一个循环(可能foreach).这并不意味着您将无法使用LINQ 作为该循环的一部分,但您不应该尝试在LINQ本身中应用副作用.