Linq - SQL将参数传递给GroupBy()

4

如何在linq查询中向groupby函数传递参数?根据用户的选择,它将以不同的方式进行分组。

 var query = (from to in OrderQuery
                     group to by to.FromDateUtc into groupedDate
                     let grouped = groupedDate.GroupBy(o => o.Name)

我想传递不同的groupby值。有什么建议吗?
谢谢

你是在尝试执行类似于SELECT * FROM <TableName> GROUP BY <Column1>,<Column2>的操作吗? - Rahul
2个回答

2

一般来说,您需要使用不同的查询。根据用户选择构建不同的WHEREWhere(...)子句也是如此:

var query = OrderQuery;
if (userSelection == "GroupByName") {
    query = from to in query
            group to by to.FromDateUtc into groupedDate
            let grouped = groupedDate.GroupBy(o => o.Name);
}
else if (userSelection == "GroupBySomethingElse") {
    query = from to in query
            group to by to.FromDateUtc into groupedDate
            let grouped = groupedDate.GroupBy(o => o.SomethingElse);
}

在对 query 进行分组之前,您应该尽可能准备好常见逻辑。由于 LINQ 使用延迟执行,因此您可以在枚举结果之前尽可能修改 query,而不会产生性能损失。


嗯...有趣...这只是我的查询的10%。看起来我需要复制和粘贴很多 :( - ove
@overule 希望不会吧。你只需要复制和粘贴涉及到你所分组方式的 差异 的部分。正如我所提到的,你应该在有条件地应用分组之前,设置 query 包含任何联接、过滤和排序操作。 - Yuck

0
如果您正在尝试做这样的事情。
SELECT * FROM <TableName> GROUP BY <Column1>,<Column2>

接着,看一下这篇文章

按多列分组


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接