我有一个从数据库中提取的查询:
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
}
我还有另一个查询在做类似的事情:
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
}
实际上,这些类要大得多,而且查询数据不仅被数据库分隔开,而且还被服务器分隔开。是否可以使用 LINQ 查询为 items.A 相交的所有 items
填充属性 B?所有内置的 LINQ 谓词似乎只用于聚合、选择或 bool 表达式。
在我的脑海里,我有这样的想法,但这一切都没有了:
items.Where(x => x.B = (otherItems.Where(z => z.A == x.A).Single().B));
或者我试图在 LINQ 中完成这项工作是不是太可笑了,应该放弃它以支持实际设置变得微不足道的 for 循环?由于截止日期,我将求助于 for 循环(从长远来看,它最终可能会变得更具可读性),但是这样做有可能吗?是否需要扩展方法来添加特殊谓词以允许这样做?
最佳答案
LINQ 专为查询而设计。如果您尝试设置 东西,您绝对应该使用循环(可能是foreach
)。这并不意味着您将无法使用 LINQ 作为该循环的一部分,但您不应该尝试在 LINQ 本身内应用副作用。
关于c# - 如何使用从查询中提取的另一个对象的值设置 linq 查询中所有项目的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7851890/