2017-07-17 31 views
0

我有一个名为“ConflictData”的Datatable。 我想通过使用LINQ通过具有c#的数据表组

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

做这个SQL命令我试试这个

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 
           }; 

但它显示错误:

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?)

我很确定数据表 “ConflictDatas” 有这些列。

如何修改我的LINQ?谢谢。

+0

已包含'使用System.Data'? –

+0

你在查询内存中的DataTable吗? –

+0

我已经包含使用System.Data –

回答

0

使用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 
           }; 
+0

谢谢。它可以工作。 –

相关问题