我正在尝试动态使用 GroupBy,我知道这是 LINQ to SQL 的一大禁忌,但我认为这可能会奏效。我只需要一些关于表达式语法的帮助。
举个简单的例子:
var grouped = from c in ctx.Customers
group c by c.LastName into Group
select Group;
我希望能够根据用户的偏好按名字或姓氏进行分组。现在我知道 LINQ 必须在这里构建一个 SQL 兼容的表达式,但我只想换掉它将用于构建最终 SQL 命令的属性。
所以我一直在尝试类似的东西:
private Expression<Func<Customer, TKey>> GetColumn<TKey>(Customer c,
GroupingType g)
{
if(g == GroupingType.First)
var e = Expression<Func<Customer, string>> l = () => c.FirstName; //Here
// etc...
}
var groupingType = GroupingType.First;
var grouped = from c in ctx.Customers
group c by GetColumn<string>(c, groupingType) into Group
select Group;
在我迷失在表达和调用的海洋中之前,有人能指出我正确的方向吗?