[英]How to add more than 1 condition when using LINQ-to-DataSet with Enumerable.Any() in C#?
我試圖檢查dataTable中是否存在值。
使用代碼:
bool lol = dtble.AsEnumerable().Any(l => array[0] == l.Field<String>("id"));
我需要在此代碼中添加更多條件,因為我想檢查多個條件。
我在此Linq中添加的條件條件是:
array[1] == l.Field<String>("Name")
和
array[2] == l.Field<String>("Stunt")
您可以在LINQ中使用邏輯AND( &&
)組合兩個條件,然后您的查詢將如下所示:
bool lol = dtble.AsEnumerable().Any(l =>
array[0] == l.Field<String>("id") &&
array[1] == l.Field<String>("Stunt"));
現在我明白了你的意思:
因此,您要匹配id,請檢查名稱在數組和DataTable中是否以相同的詞開頭,並檢查是否匹配的Stunt。 因此,請執行以下操作:
bool lol = (from dRow in dtble.AsEnumerable()
where array[0] == dRow.Field<string>("id")
&& GetFirstWord(array[1]) == GetFirstWord(dRow.Field<string>("Name"))
&& array[2] == dRow.Field<string>("Stunt")
select dRow).Any();
並添加此方法:
// returns the first word in a string
private static string GetFirstWord(string str)
{
return str.Split(' ').FirstOrDefault();
}
編輯:
您可能需要替換以下行:
&& GetFirstWord(array[1]) == GetFirstWord(dRow.Field<string>("Name"))
如果固定名稱是dataTable中的名稱(作為第一個單詞),並且名稱可能不是數組中的第一個單詞,請使用以下命令:
&& dRow.Field<string>("Name").Contains(GetFirstWord(array[1]))
(LINQQUERY).AsEnumerable().Any(x => x.FieldName1 == (value) && x.FieldName2 == (value));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.