C# silverlight中的数据透视列表
我有一个这样构造的数据列表:C# silverlight中的数据透视列表,c#,silverlight,gridview,pivot,silverlight-5.0,C#,Silverlight,Gridview,Pivot,Silverlight 5.0,我有一个这样构造的数据列表: public class MyData { public string Name { get; set; } public datetime Date { get; set; } public double? Value { get; set; } public string Other { get; set; } } List<MyData> lstData = new
public class MyData
{
public string Name { get; set; }
public datetime Date { get; set; }
public double? Value { get; set; }
public string Other { get; set; }
}
List<MyData> lstData = new List<MyData>();
Name Date Value Other
---------------------------
User1 1/1/2001 27 test
User1 1/1/2002 44 test
User1 1/1/2003 65 test
User2 1/1/2001 111 test
User2 1/1/2002 384 test
User2 1/1/2003 98 test
User3 1/1/2001 322 test
User3 1/1/2002 445 test
User3 1/1/2003 77 test
.
.
.
Date User1 User2 User3 ...
--------------------------
1/1/2001 27 111 322
1/1/2002 44 384 445
1/1/2003 65 98 77
我想把数据透视成这样:
public class MyData
{
public string Name { get; set; }
public datetime Date { get; set; }
public double? Value { get; set; }
public string Other { get; set; }
}
List<MyData> lstData = new List<MyData>();
Name Date Value Other
---------------------------
User1 1/1/2001 27 test
User1 1/1/2002 44 test
User1 1/1/2003 65 test
User2 1/1/2001 111 test
User2 1/1/2002 384 test
User2 1/1/2003 98 test
User3 1/1/2001 322 test
User3 1/1/2002 445 test
User3 1/1/2003 77 test
.
.
.
Date User1 User2 User3 ...
--------------------------
1/1/2001 27 111 322
1/1/2002 44 384 445
1/1/2003 65 98 77
并将其再次绑定到GridView中
如何在C#/Silverlight中实现这一点
谢谢。好吧,下面是我如何得到想要的结果的:
List<MyData> lstData = new List<MyData>();
List<dynamic> lst = new List<dynamic>();
foreach (var item in lstData.Select(a => a.Date).Distinct())
{
dynamic obj = new ExpandoObject();
obj.Date = item;
lst.Add(obj);
}
foreach (string item in lstData.Select(a => a.Name).Distinct())
{
foreach (var objitem in lst)
{
string header = item;
((IDictionary<String, Object>)objitem).Add(header, lstData.Where(d => d.Date == objitem.Date && d.Name == item).FirstOrDefault().Value);
}
}
gridView.Itemssource = lst;
List lstData=新列表();
List lst=新列表();
foreach(lstData.Select(a=>a.Date.Distinct()中的var项)
{
动态对象=新的ExpandooObject();
对象日期=项目;
第一次添加(obj);
}
foreach(lstData.Select(a=>a.Name.Distinct()中的字符串项)
{
foreach(lst中的var objitem)
{
字符串头=项;
添加(头,lstData.Where(d=>d.Date==objitem.Date&&d.Name==item.FirstOrDefault().Value);
}
}
gridView.Itemssource=lst;