2017-07-17 2 views
0

Ich habe ein Datatable namens "ConflictData". Ich möchte mithilfe von LINQDatatable Gruppe mit C#

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

Ich versuche, diese

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

diesen SQL-Befehl tun, aber es den Fehler zeigen:

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

ich ziemlich sicher, dass Datatable "ConflictDatas" haben diese Säulen. Wie kann ich meine ändern? Vielen Dank.

+0

Haben Sie enthalten 'mit System.Data' zu holen? –

+0

Fragen Sie eine 'DataTable' im Speicher ab? –

+0

Ich habe bereits mit System.Data –

Antwort

0

Verwendung Field<datatype>("columnName") Zellwert von bestimmten Spalte in Datentabelle Zeile wie unten

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

Vielen Dank. Es kann funktionieren. –