考虑LINQ代码:
var objs = (ClientsDB.Context.ClientProcessed.GroupBy(grp => new
{
City = grp.City,
Day = grp.Insert_Date.Value.Day,
Month = grp.Insert_Date.Value.Month,
Year = grp.Insert_Date.Value.Year
})....
var objs = (ClientsDB.Context.ClientProcessed.GroupBy(grp => new
{
Department = grp.Department,
Day = grp.Insert_Date.Value.Day,
Month = grp.Insert_Date.Value.Month,
Year = grp.Insert_Date.Value.Year
})....
var objs = (ClientsDB.Context.ClientProcessed.GroupBy(grp => new
{
State = grp.State,
Day = grp.Insert_Date.Value.Day,
Month = grp.Insert_Date.Value.Month,
Year = grp.Insert_Date.Value.Year
})....
如何通过作为字符串传递的特定列完成GroupBy?
例如:
String grpByParam = "City"; // grpByParam = "State"; // String grpByParam = "Department";
然后将该参数传递给linq查询,而不是一次又一次地复制LINQ查询。
仅供参考,我需要它作为LINQ-TO-SQL而不是LINQ-TO-OBJECTS查询,这意味着我希望过滤在DB中完成,而不是在内存中完成。
这可能吗?
由于
答案 0 :(得分:0)
您可以检查字符串值并根据
调用GroupBy
if (grpByParam.Equals("City")) {
result = source.GroupBy(a => a.City);
} ...
您可以实现一个方法,该方法采用source
(不含GroupBy
的LINQ查询)和return
result
(GroupBy
的结果)
见
<{3>}中的此方法通过使用延迟执行来实现。眼前的 返回值是存储所有信息的对象 需要执行操作。此方法表示的查询 在通过调用对象枚举对象之前不会执行 直接使用GetEnumerator方法或在Visual C#或For中使用foreach 每个都在Visual Basic中。
。