C# linq到实体包含不起作用

C# linq到实体包含不起作用,c#,linq,linq-to-sql,linq-to-entities,C#,Linq,Linq To Sql,Linq To Entities,我不熟悉LINQtoEntities,在使用contain方法时遇到了一些问题。 这是我数据库中的示例表 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"); Us

我不熟悉LINQtoEntities,在使用contain方法时遇到了一些问题。 这是我数据库中的示例表

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 to entities中,我写了这个声明

entities edm = new entities();
var query= from a in edm .UserTable 
           where a.Name.Contains("Tom")
           select a;
结果是第一行的名字正好是Tom

如何获得包含4行的结果?例如类似SQL的方法%Tom%

谢谢你的帮助和好意

环境:VS2010/.Net FrameWork4

//更新//

非常感谢本·米伦。 在我将ToList()添加到语句后面后,它就会工作

var query= (from a in edm .UserTable 
               where a.Name.Contains("Tom")
               select a).ToList();
这两种说法的区别是什么?我不明白为什么这种改进能奏效。

试试看

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

这样做有效吗?

如果UserTable有一个名为“Name”的行,其中包含4条包含Tom的记录,那么您的查询应该可以工作。这就是您的工作方式。我想你在别处遗漏了什么。你不是在你的
查询
对象的某个地方执行
FirstOrDefault()
First()
?原因:这应该是完全正确的。说明:通过将查询包装在
ToList()
中,可以强制立即运行查询。如果这解决了您的问题,那是因为您正在进行查询、更改数据,然后实际运行它。