[英]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.