假設我有一個List<string>看起來像這樣的:
var lstStuff = new List<String>(){"test", "value", "other"};
我也有一個看起來像這樣的模型類
public class Codes {
public string Code {get;set;}
public string? HaveVal {get;set;}
}
在我的 C# 方法中,我有這樣的東西。我想要實作的是回傳一個TRUE或者FALSE如果任何單個專案有lstStuff一個HaveVallstCode
public bool DoesAnyCodeHaveAValue
{
var lstStuff = new List<String(){"Code1","Code2","Code3"};
List<Code> lstCode = new List<Code>() {
new Code() {Code = "Code1", HaveVal=null},
new Code() {Code = "Code1", HaveVal="yes"},
new Code() {Code = "Code1", HaveVal="yes"}
};
}
這是我的代碼來實作這一點,但我想知道是否有 LINQ 方法可以做到這一點。
var isVal = false;
foreach (var val in lstStuff){
if (!string.IsNullOrEmpty(lstCode.Where(x=>x.Code=val).Select(y=>y.HaveVal).ToString())){
isVal=true;
}
}
return isVal;
有沒有更短的方法可以做到這一點,而不需要回圈?
uj5u.com熱心網友回復:
您可以使用Any()兩次::
bool isVal = lstCode.Any(c => lstStuff.Any(s => s == c.Code));
如果您不想要空值,也可以將它們過濾掉:
bool isVal = lstCode.Any(c => !string.IsNullOrEmpty(c.HaveVal)
&& lstStuff.Any(s => s == c.Code));
這是一個演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424196.html
