我有一個串列“A”和一個通用串列“B”。我需要找到“A”的所有專案,這些專案不在“B”中且具有多個條件。
串列“A”:
EXWORK
CENTAGES
PREMIUM
串列“B”:
PARTICULARS CATAGORY DETAIL
EXWORK ERECTION ABC
CENTAGES ERECTION ABC
PREMIUM SUPPLY ABC
為此,我使用以下代碼:
var value = A.Where(a => B.All(b => b.CATAGORY == "SUPPLY" && b.PARTICULARS!=a));
但這也會回傳值“Premium”,而它不應該是。我不知道我在哪里犯錯。
我想要的結果是:
EXWORK
CENTAGES
uj5u.com熱心網友回復:
您是否需要查找A其中未列為PARTICULAR分類的SUPPLY所有專案B?
如果是這樣,您可以在BwhereCATEGORY = "SUPPLY"和 return 串列中找到所有專案,但過濾專案的值A除外。PARTICULARB
var value = A.Except(
B.Where(b => b.CATAGORY == "SUPPLY")
.Select(b => b.PARTICULARS));
示例小提琴在這里。
uj5u.com熱心網友回復:
我想也許你的意思是:
var value = A.Where(a => !B.Any(b => b.CATAGORY == "SUPPLY" && b.PARTICULARS == a));
uj5u.com熱心網友回復:
如果您查看查詢,您正在嘗試A根據 List 中的條件過濾串列,B即應該出現在串列中。b.CATAGORY == "SUPPLY"PARTICULARSA
要獲得所需的輸出,您需要遍歷 ListB并根據條件b.CATAGORY == "SUPPLY"和PARTICULARS屬性過濾記錄,
var result = B
.Where(x => x.CATAGORY == "ERECTION" && A.Contains(x.PARTICULARS)) //Use Contains.
.Select(x => x.PARTICULARS); //Select only PARTICULARS value.
在線試用
如果您想要來自 List 的資料A,那么您可以分兩步破壞您的 linq,
var resultB = B
.Where(x => x.CATAGORY == "SUPPLY")
.Select(x => x.PARTICULARS).ToList();
var value = A.Except(resultB);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/434734.html
標籤:C# 林克 asp.net-3.5
