2016-04-15 3 views
0

У меня есть sql db, что каждый раз, когда устройство идет не так, оно создает запись. На основании того, что происходит, назначается другой FaultCode.Группа и счет с использованием LINQ

Я хочу группировать и подсчитывать количество раз, когда существует FaultCode.

Example: 
    FaultCode Count 
    1   6 
    2   20 

Я написал большую часть кода, я могу запросить db и выполнить запрос linq. Однако я могу только вернуть список кодов ошибок графов. Но не оба.

Вот код:

private static DataTable FaultCodeByCluster(DataTable referenceDt) 
{ 
    DataTable output = new DataTable(); 

    foreach (DataColumn dtColum in (InternalDataCollectionBase)referenceDt.Columns) 
     output.Columns.Add(new DataColumn(dtColum.ColumnName, dtColum.DataType)); 

    var query = from results in referenceDt.AsEnumerable() 
     group results by new 
     { 
      FaultCode = results.Field<int>("FaultCode"), 
     } 
     into newFaultCodes 
     orderby newFaultCodes.Key.FaultCode 

     select newFaultCodes.Count();   <--- count of fault codes 
     //select newFaultCodes.Key.FaultCode; <--- list out fault codes by group 

    foreach (var newFaultCodes in query) 
    { 
     Console.WriteLine("Value is {0}", newFaultCodes); 
    } 

    return output; 
} 

ответ

1

Я не проверял, но попробовать использовать что-то вроде этого в качестве оператора выбора:

select new { FaultCode = newFaultcodes.Key, Count = newFaultcodes.Count()};

+0

Работал отлично. Я попробовал что-то вроде этого, но что-то не так. Спасибо за помощь. – EMIE

0

Другой способ, используя Linq ..

Добавить сборку System.Data.DataSetExtensions, вы можете конвертировать DataTable в List

  var listOfFaultCode = dt1.Rows  
            .OfType<DataRow>() 
            .Select(dr => dr.Field<int>("FaultCode")).ToList(); 

      var faultCodeGroupedByCount = listOfFaultCode.GroupBy(x => x); 

      foreach (var item in faultCodeGroupedByCount) 
      { 
       Console.WriteLine("FaultCode:" + item.Key + " FaultCount:" + item.Count()); 
      } 
Смежные вопросы