Linq去重(自定義字段)

2022-05-02 10:45:08 字數 591 閱讀 5826

業務場景,接受乙個datatable ;根需求需要按照品號去重(業務場景:明細表存在多筆相同品號)

在這樣的場景下不能簡單的使用如下寫法去重:

var _list = _tempdatatable.asenumerable().where(p => p["total_inv_qty"].todecimal() > p["total_issue_inv_qty"].todecimal()).distinct().tolist();
定義乙個自定義比較器:

class datarowcomparer : iequalitycomparer

public int gethashcode(datarow row)//重寫hashcode

} //去重操作:

var _list = _tempdatatable.asenumerable().where(p => p["total_inv_qty"].todecimal() > p["total_issue_inv_qty"].todecimal()).distinct(new datarowcomparer()).tolist();

lamda根據自定義條件去重

由於distinct 不提供按照屬性對物件列表進行去重的直接實現,要想按物件屬性去重無法實現。解決方案 public static predicate distinctbykey function super t,object keyextractor res res.stream filter x...

Linq 去重簡介

說到去重首先想到的便是distinct,但是也不是所有地方都適用。下面就講乙個不適用的場景,並給出解決方案。var list await query.getall asnotracking select x x.provincecode distinct tolistasync 這段 獲取 prov...

使用自定義字段

轉儲所有自定義字段作為列表顯示乙個特定自定義欄位的值id,mood true mood 將是自定義欄位的id值 顯示相同自定義欄位id的多個值id,songs false 僅在存在時顯示自定義字段 邏輯 url get post meta post id,snippet reference url ...