[英]Group and Count using LINQ
我有一個sql db,每次設備損壞時,它都會創建一條記錄。 根據發生的情況,分配不同的FaultCode。
我想分組並計算存在FaultCode的次數。
Example:
FaultCode Count
1 6
2 20
我已經編寫了大部分代碼,可以查詢數據庫並執行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;
}
我尚未對其進行測試,但是請嘗試將以下內容用作您的select語句:
select new { FaultCode = newFaultcodes.Key, Count = newFaultcodes.Count()};
使用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());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.