【发布时间】:2009-12-05 21:39:52
【问题描述】:
我有一些不能直接相互访问的数据对象集合。我想最好的解决方案是让数据库人员对此进行查询,但与此同时,有什么办法可以收紧吗?
var conflicting = allFoos.Where(foo => foo.ElectronicSerialNumber != 0
&& foo.BarID != interestingBar.ID)
.Join(fooInfoCollection, foo => foo.ElectronicSerialNumber,
fooInfo => fooInfo.ElectronicID,
(foo, fooInfo) => foo)
.Join(allBars, foo => foo.BarID, bar => bar.ID, (foo, bar) => bar)
.Where(bar => bar.SomeCriteria == false)
.FirstOrDefault();
if (conflicting != null)
{
doStuff(conflicting);
}
【问题讨论】:
-
您能否澄清一下这是 LINQ to SQL 还是 LINQ to Objects?另外,您是否有连接的外键约束?
-
linq 到对象,没有我知道的限制
-
澄清问题:“收紧”可能意味着很多事情。您是指风格、性能还是其他?
-
如果您只是指语法,有时如果您使用中间变量名称,则在编写查询时更容易阅读/理解查询。请记住,在您枚举之前,不会评估任何 IQueryable。
-
@David B:性能,如果可能的话,或者更惯用的方式,或者你有什么。基本上,它的某些东西让我觉得不太对劲。但到目前为止,除了数据库推荐(我预料到的),我还没有看到有人说“你做错了”,所以也许这种“健全性检查”就足够了。
标签: c# linq c#-3.0 linq-to-objects