2014-02-25 44 views
-5

我正試圖找到List中的一個元素,其中屬性fileName與我給它的變量相匹配。我的「哪裏」查詢找不到我想要的數據

var tenant = from c in Program.customerList 
       where c.fileName == name 
       select c; 

Console.WriteLine("found = " + tenant.Count()); 

這回0

我知道,我的名單有我想要檢索的數據。我究竟做錯了什麼?

我的列表中沒有我想要檢索的數據。當我填充customerList時,從double轉換爲字符串時我失去了一些精度,導致我的比較失敗。

我想知道我的查詢是否有任何問題,但沒有錯。

+2

愚蠢的問題,但是你的列表中的值和名稱的情況是不同的? Linq是區分大小寫的,如果它們不匹配,那麼你不會得到任何結果 – Andrew

+2

我們可以有'name'和你的'customerList'項目的例子嗎?可能是區分大小寫,字符轉義,編碼等問題,但沒有示例我們就不能做很多事情。 –

+1

你期望的結果是什麼? 「name」的值和'fileName'的值是否與你匹配?沒有看到你的數據,我們不可能知道這個過濾器不起作用。但我可以向你保證,這個過濾器完全符合它設計的目的。 – David

回答

4

如果您不需要完全匹配而不是equality,則可能需要string.Contains

var tenant = from c in Program.customerList where c.fileName.Contains(name) select c; 

此方法執行一個序(區分大小寫和 培養不敏感的)的比較。搜索這個字符串的第一個 字符位置開始並通過最後 字符繼續,msdn

+0

我正在比較兩個轉換爲字符串的數字。這在某些時候是有效的,因爲當其中一個數字被轉換時我失去了一些精度,而較小的數字適合較大的數字。 – Houseman

0

試試這個

var tenant = from c in Program.customerList where c.fileName.ToLower() == name.ToLower() select c; 
-4
var tenant = Program.cusomerList.Where(x => x.fileName == name) 

tenant.Count()必須返回值> 0,如果Program.cusomerList具有文件名==對象的對象

+3

我認爲你只是重新提出了這個問題...... –

相關問題