简体   繁体   English

通过使用C#进行数据表分组

[英]Datatable group by having c#

I have a Datatable called " ConflictData ". 我有一个名为“ ConflictData ”的数据表。 I want to do this SQL command by using LINQ 我想通过使用LINQ来执行此SQL命令

Select ID from ConflictData group by ID,DesignArticle,DesignNo,PatternCode having count(ID)>=2))

I try this 我尝试这个

   var ID = from item in ConflictDatas.AsEnumerable()
                             group item by new
                 {
                     ID = item.ID,
                     DesignArticle = item.DesignArticle,
                     DesignNo = item.DesignNo,
                     PatternCode = item.PatternCode
                 } into g
                             where g.Count() > 2
                             select new
                              {
                                  ID = g.Key.ID
                              };

But it show the error: 但是显示错误:

Error 2 'System.Data.DataRow' does not contain a definition for 'ID','DesignArticle','DesignNo','PatternCode' and no extension method 'ID','DesignArticle','DesignNo','PatternCode' accepting a first argument of type 'System.Data.DataRow' could be found (are you missing a using directive or an assembly reference?) 错误2'System.Data.DataRow'不包含'ID','DesignArticle','DesignNo','PatternCode'的定义,并且没有扩展方法'ID','DesignArticle','DesignNo','PatternCode'接受可以找到类型为'System.Data.DataRow'的第一个参数(是否缺少using指令或程序集引用?)

I pretty sure datatable " ConflictDatas " have these Columns. 我很确定数据表“ ConflictDatas ”具有这些列。

How do I modify my LINQ ? 如何修改LINQ Thanks. 谢谢。

use Field<datatype>("columnName") to fetch cell value of given column in datatable row as below 使用Field<datatype>("columnName")来获取Field<datatype>("columnName")行中给定列的单元格值,如下所示

var ID = from item in ConflictDatas.AsEnumerable()
                             group item by new
                 {
                     ID = item.Field<int>("ID"),
                     DesignArticle = item.Field<string>("DesignArticle"),
                     DesignNo = item.Field<string>("DesignNo"),
                     PatternCode = item.Field<string>("PatternCode")
                 } into g
                             where g.Count() > 2
                             select new
                              {
                                  ID = g.Key.ID
                              };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM