簡體   English   中英

通過屬性表達式構建LINQ to SQL組

[英]Build a LINQ to SQL Group By Property Expression

我正在嘗試動態使用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;

在我迷失於表情和調用的迷茫之前,有人可以給我指出正確的方向嗎?

嘗試這個:

bool byLastName = true;

Expression<Func<Customer, string>> exp;

if (byLastName)
{
    exp = p => p.LastName;
}
else
{
    exp = p => p.FirstName;
}

var grouped = ctx.Customers.GroupBy(exp);

有時LINQ的功能語法比from... select...語法更易於使用。 在這里, Expression<Func<Customer, string>>是明確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM