2014-01-22 55 views
0

我有了如下的表:LINQ檢查沒有價值相匹配

| FruitID | UserID | FruitName | .... 

我希望創建一個返回boolean值的查詢:如果沒有用戶的水果被稱爲某名稱,如果名稱已在表中,則返回false

這就是我所擁有的:。

using (MyDC TheDC = new MyDC()) 
{ 
    return TheDC.TheTable 
        .Where(l => l.UserID == TheUserID) 
        .Select(l => l.FruitName == TheFruitName).Any(); 
} 

我需要做些什麼來使這個查詢工作?

謝謝。

+0

它不工作嗎?它出什麼問題了? –

+0

你在哪裏比較'FruitName'? – Habib

+0

@SamIam:如果找到一個,它需要返回false – frenchie

回答

2

你可以使用.Any本身,我認爲你的查詢的工作原理與此相反,你也需要一個!也返回之前返回false如果有任何。

using (MyDC TheDC = new MyDC()) 
{ 
    return !TheDC.TheTable 
        .Any(l => l.UserID == TheUserID && l.LeadsheetName == TheLeadsheetName);   
} 
2

Any不帶參數返回給定的序列是否有任何元素,無論什麼樣的元素。爲了讓你似乎指望它(看看您的選擇返回了任何true S)是什麼,你需要一個條件添加到它:

.Select(l => l.FruitName == TheFruitName).Any(b => b) 

當然,而不是選擇布爾值,然後檢查他們,你應該只是做檢查直接:

.Any(l => l.FruitName == TheFruitName) 

根據你的描述,這將返回你想要什麼,雖然對面:你希望它返回true如果是表中未。兩種方法編寫「不是任何真正的」或「全是假的」:

又沒TRUE(在表達式的開頭注意到!):

!TheDC.TheTable 
    .Where(l => l.UserID == TheUserID) 
    .Any(l => l.FruitName == TheFruitName) 

全是假的:

TheDC.TheTable 
    .Where(l => l.UserID == TheUserID) 
    .All(l => l.FruitName != TheFruitName)