【发布时间】:2011-06-02 16:07:39
【问题描述】:
我一直在阅读动态 LINQ 和谓词构建器。我对一些后端物流有点不清楚和困惑。我正在尝试为我的一个应用程序提供报告/高级搜索选项,其中涉及令人讨厌的 groupwise-max 查询。
我可以轻松地将它们组合在一起以编程方式过滤结果,但是出于性能原因,我当然更喜欢在 SQL 服务器上执行 where 子句,而不是在 .net 代码中。我不确定哪些解决方案实际上在 SQL 而不是客户端/.NET 端执行谓词。这是我想用 LINQ 做的一个例子:
from fbd in db.FooBarDatas
join max_fbd in
(from fbd in db.FooBarDatas
group fbd by new { fbd.FooID, fbd.BarID } into grp
select new { MaxFooBarDataID = grp.Max(fbd => fbd.FooBarDataID }
)
on fbd.FooBarDataID equals max_fbd.MaxFooBarDataID
select new
{
FooBarDataID = fbd.FooBarDataID,
NormalizedPropertyName1 = fbd.Column1,
NormalizedPropertyName2 = fbd.Column2,
NormalizedPropertyName3 = fbd.Column3,
etc...
}
所以这是我的基本查询。最后我将它们全部放入通用链接数据对象中,因为我想从查询中动态提取的许多数据来自外部表,我希望它们都被作为直接属性引用。
现在我想要一种方法,可以将一大堆“where”子句条件添加到此查询中,以便生成有意义的报告。 “where”子句将根据用户给出的参数而有所不同。记录集相当大,所以我再次寻找一种在 SQL 端进行过滤的方法。
谁能提供一个简单的例子来说明如何做到这一点?提前感谢您的帮助。
【问题讨论】:
标签: linq dynamic where-clause