Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq和Group by将数据表转换为对象_C#_Linq - Fatal编程技术网

C# 使用Linq和Group by将数据表转换为对象

C# 使用Linq和Group by将数据表转换为对象,c#,linq,C#,Linq,我尝试将datatable转换为具有特殊格式的JSON 数据表中的数据如下 col1 col2 col3 col4 --------------------- A B c D1 A B c D2 A B c D3 尝试将其转换为对象数组,如 class obj { var col1; var col2; var col3; list<string> col4; } var result=来自dt.AsEnumer

我尝试将datatable转换为具有特殊格式的JSON

数据表中的数据如下

col1 col2 col3 col4
---------------------
 A    B    c    D1
 A    B    c    D2
 A    B    c    D3
尝试将其转换为对象数组,如

class obj {
 var col1;
 var col2;
 var col3;
 list<string> col4;
}
var result=来自dt.AsEnumerable()中的行
按“新建”分组行
{
c1=r.字段(“col1”),
c2=r.字段(“col2”),
c3=r.字段(“col3”)
}分段
选择新的
{
col1=第.Key.c1节,
col2=第.Key.c2节,
col3=第.Key.c2节,
col4=section.Select(r=>r.Field(“col4”)).ToList()
};

col4=section.Select(r=>r.Field(“col4”)).ToList()会更好。@TimSchmelter你说得对,谢谢!实际上,对于分组键,我们也可以使用
字段
扩展名(假设其他列也有字符串数据),感谢您的快速响应!
 var result = from row in dt.AsEnumerable()
                         group row by new
                         {
                             c1 = row["col1"],
                             c2 = row["col2"],
                             c3 = row["col3"]
                         }
                             into section
                             select new
                                 {
                                     item = section.Key

                                 };
var result = from row in dt.AsEnumerable()
             group row by new
             {
                 c1 = r.Field<string>("col1"),
                 c2 = r.Field<string>("col2"),
                 c3 = r.Field<string>("col3")
             } into section
             select new
             {
                 col1 = section.Key.c1,
                 col2 = section.Key.c2,
                 col3 = section.Key.c2,
                 col4 = section.Select(r => r.Field<string>("col4")).ToList()
             };