有没有办法在LINQ中动态构建Where子句?
示例...今天我查询我的sql db,只有ServerGroup A有问题。我返回该组的故障代码。作品。但是,明天,ServerGroup A& B有问题。我不想手动更改我的LINQ查询,而是让它动态地将新的ServerGroup添加到WHERE子句中。 LINQ可以实现吗?我已经用Sql查询完成了它。
非常感谢您的帮助。
var query = referenceDt.AsEnumerable()
.Where(results => results.Field<string>("ServerGroup") == "A" ||
results.Field<string>("SeverGroup") == "B")
.GroupBy(results => new
{
FaultCode = results.Field<int>("FaultCode")
})
.OrderByDescending(newFaultCodes => newFaultCodes.Key.FaultCode)
.Select(newFaultCodes => new
{
FaultCode = newFaultCodes.Key.FaultCode,
Count = newFaultCodes.Count()
});
答案 0 :(得分:1)
这是.Contains()
var serverGroups = new string []{ "A", "B" }.ToList();
var query = referenceDt.AsEnumerable()
.Where(results => serverGroups.Contains(results.Field<string>("ServerGroup")))
.GroupBy(results => new
{
FaultCode = results.Field<int>("FaultCode")
})
.OrderByDescending(newFaultCodes => newFaultCodes.Key.FaultCode)
.Select(newFaultCodes => new
{
FaultCode = newFaultCodes.Key.FaultCode,
Count = newFaultCodes.Count()
});
其中将动态生成serverGroup。
答案 1 :(得分:0)
您可以在Linq查询中使用Contains
来获取等效于IN
的SQL。