Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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&;过滤、添加列和插入空值;我们可以根据我们的条件迭代linq n次吗?_C#_Vb.net_Linq - Fatal编程技术网

C# 使用LINQ&;过滤、添加列和插入空值;我们可以根据我们的条件迭代linq n次吗?

C# 使用LINQ&;过滤、添加列和插入空值;我们可以根据我们的条件迭代linq n次吗?,c#,vb.net,linq,C#,Vb.net,Linq,这是我的数据表: M N O x A 5 x B 6 x A 6 x B 2 z C 2 z C 6 这应该是输出: M A B C x 11 8 0 z 0 0 8 关于迭代查询n次的问题是,我已经过滤了datatable并按datatable分组,例如,z只有一个值,因此查询将只对z迭代一次,但我必须对其他n列元素迭代三次 迄今为止尝试的代码: From roww In DT.AsEnumerable().Where(Function(h) CStr(h("M"))="x"

这是我的数据表:

M N O
x A 5
x B 6 
x A 6 
x B 2 
z C 2 
z C 6
这应该是输出:

M A  B C
x 11 8 0 
z 0  0 8
关于迭代查询n次的问题是,我已经过滤了datatable并按datatable分组,例如,z只有一个值,因此查询将只对z迭代一次,但我必须对其他n列元素迭代三次

迄今为止尝试的代码:

From roww In DT.AsEnumerable().Where(Function(h) CStr(h("M"))="x" And CStr(h("N"))=CStr(arr_N_Columns_Items(1)) ).Where(Function(b) (arr_of_str.Contains(CStr(b("N"))))) Group By x=New With {key .idd=roww.Item("M"),key .iddd=roww.Item("N")} Into gg = Group Select gg.OrderBy(Function(l)CStr(l("N"))).Sum(Function(v) (If((CStr(arr_N_Columns_Items(1))=(CStr(v("N"))) ),(CDbl(v("O"))),0) ))
上面的查询完成了任务,但只针对所有当前元素,而不是如上所述的缺席元素

var result = dataTable.GroupBy(m => m.M).Select(r => 
                new 
               {
                    M = r.Key,
                    A = r.Where(e => e.N == "A").Sum(q => q.O),
                    B = r.Where(e => e.N == "B").Sum(q => q.O),
                    C = r.Where(e => e.N == "C").Sum(q => q.O)
               }).ToList();

到目前为止,您尝试了什么?“我想使用linq进行此操作,并提供任何建议”。学习LINQ。因此,类似的网站旨在帮助你做那些你不能做的事情,而不是为你做那些你不想尝试去做的事情。如果你尝试失败了,那么是时候在这里发布一个问题了。如果你没有尝试过,那么你就没有遇到具体的问题,这就是为什么要这样做。@Vickydas补充了一个答案Hello@jmcilhinney我总是尽我最大的努力,而不是按堆栈进行分组和求和。但是,如果项目少于,则无法获得迭代。这意味着,如果一个项目的所有项目都比它正常工作,但我无法为第0个元素执行此操作。我还尝试使用enumerable.range方法强制执行迭代。这是我正在处理的代码。请不要在注释中发布长代码片段。格式化时它们几乎不可读,但未格式化时完全可读。请编辑您的问题,并将所有相关信息放在那里,放在应该开始的地方。你尽最大努力是好的,但写一个适当的问题也很重要,包括你尝试了什么以及尝试时发生了什么。你应该花一些时间在帮助中心学习如何更好地提出一个好问题。hello@Gabriellorico我尝试过这种方法,但由于N列mai包含许多项,因此这种方法将是静态的,因为我必须手动键入所有项,任何方法都可以对N列执行此方法???@OK,将其更改为somethinghello@Gabriellorico您有没有找到添加动态列数的方法…….与此问题类似,您是否知道如何在使用Datatable.rows.loaddatarow或Datatable.rows.add方法时添加动态列数,例如DT.Clone.rows.add(列的剩余部分,查询中的变量)).copytodatatable