簡體   English   中英

在C#中將LINQ-to-DataSet與Enumerable.Any()一起使用時,如何添加多個條件?

[英]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.

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