簡體   English   中英

使用LINQ和VB.NET從數據表中選擇涉及多個列的條件來選擇不同的行

[英]Select distinct rows from a datatable with criteria involving multiple columns using LINQ with VB.NET

我有一個數據表,如圖所示。

初始表

讓我根據這張圖片說明我的要求。 我有7行數據。 第1行和第2行包含直到UnitSqcNo相同的列。 我只希望兩者之間的第3行。 總的來說,我想選擇所有具有不同model, unittype, unit的行model, unittype, unit並選擇具有更大CompId 即表應該看起來像

結果表

抱歉,我沒有VB.Net的經驗,所以我在C#中發布:

似乎您想過濾出UnitName的重復條目,並僅保留CompID值最高的條目。 鑒於此,您可以嘗試以下操作:

DataTable dt = GetDataTable(); //your logic of building your data table

//order rows by CompID, group by UnitName and keep only first entry of each group        
var filteredData = (from row in dt.AsEnumerable() orderby row.Field<int>("CompID") descending group row by row.Field<string>("UnitName")).Select(r => r.First());

DataTable nt = GetDataTable(); //alternatively, you could build a new data table
nt.Rows.Clear();  //clear table as it is used as destination for filtered data

foreach (DataRow r in filteredData)  //add filtered rows to table
{
     DataRow n = nt.NewRow();
     n.ItemArray = r.ItemArray;
      nt.Rows.Add(n);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM