[英]Linq: How can I get a result in a grouping query which is value agnostic and has dynamic columns?
我有一個名為Foo的表,我有兩列:Lorem和Ipsum,所以表的方案是:
Foo(Lorem, IpsumID)
我還有一個名為IpsumTypes的表,如下所示:
IpsumTypes(IpsumID, IpsumName)
我想寫一個LINQ查詢,它將得到以下結果:
標題:Lorem,IpsumName1,IpsumName2,...,IpsumNamen值:Loremi,count(IpsumName1),...,count(IpsumNamen)
每行代表一組Lorem值和組中每個可能的IpsumID的數量。 可以將新行添加到IpsumTypes表中,也可以刪除行,因此我需要動態生成的列,因為在編寫代碼時我不知道Ipsum的可能值。 我怎樣才能做到這一點? 是否有一個神奇的Linq查詢解決了這個問題,或者我應該從數據庫中獲取值並單獨解析它們,如果速度很重要?
提前感謝您的回復。
我想你正在尋找PIVOT SQL語句。 但是沒有LINQ等價物,所以你應該使用SQL來自己解析返回的數據。
此查詢從數據庫中獲取所需的值。 從那里,您可以投影到xml或您的程序可以理解的其他動態形狀。
from foo in Foo
let name = foo.IpsumType.IpsumName
group foo by new
{
Lorem = foo.Lorem,
Name = name
} into g
select new
{
Lorem = g.Key.Lorem,
Name = g.Key.Name,
Count = g.Count()
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.