2013-08-27 86 views
1

我是新來的linq to entities,我在使用contains方法時遇到了問題。 這是我的數據庫中的示例表。linq to entities contains not does not work

DataTable UserTable = new DataTable(); 
UserTable .Columns.Add("ID", typeof(int)); 
UserTable .Columns.Add("Name", typeof(string)); 

UserTable .Rows.Add(1,"Tom"); 
UserTable .Rows.Add(2,"Tom_dad"); 
UserTable .Rows.Add(3,"Tom_mom"); 
UserTable .Rows.Add(4,"Tom_sister"); 

在LINQ到實體我寫的聲明

entities edm = new entities(); 
var query= from a in edm .UserTable 
      where a.Name.Contains("Tom") 
      select a; 

結果是唯一的第一行,其中的名稱正是湯姆。

如何獲得包含4行的結果?如SQL LIKE方法%Tom%。

感謝您的幫助和善良。

環境:VS2010/.NET FrameWork4

// //更新

非常感謝奔Millane。 它在語句後面添加ToList()後有效。

var query= (from a in edm .UserTable 
       where a.Name.Contains("Tom") 
       select a).ToList(); 

這兩條語句有什麼區別?我徘徊爲什麼這種改進可以奏效。

+1

如果UserTable有一個名爲「Name」的行,並且包含4條記錄,並且Tom中有記錄 - 那麼您的查詢應該可以工作。 –

+3

這就是你如何做到的。我想你在其他地方錯過了一些東西。 – gunr2171

+1

難道你不在你的'query'對象上的某處執行FirstOrDefault()或First()嗎?因爲這應該是完全正確的。 –

回答

3

嘗試

entities edm = new entities(); 
var query= (from a in edm .UserTable 
     where a.Name.Contains("Tom") 
     select a).ToList(); 

運作的?

+1

說明:通過將您的查詢包裝到「ToList()」中,您可以強制查詢立即運行。如果這可以解決您的問題,那是因爲您正在進行查詢,更改數據,然後實際運行它。 – gunr2171

+0

非常感謝!有用! – Shinline