【问题标题】:linq to entities contains does not worklinq 到实体包含不起作用
【发布时间】:2013-08-28 00:04:00
【问题描述】:

我是 linq to entity 的新手,在使用 contains 方法时遇到问题。 这是我的数据库中的示例表。

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 entity 我写了语句

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

结果只有第一行的名字正好是 Tom。

如何获得包含 4 行的结果?比如SQL LIKE方法%Tom%。

感谢您的帮助和善意。

环境:VS2010 / .Net FrameWork4

//更新//

非常感谢 Ben Millane。 在我在语句后面添加 ToList() 后它就可以工作了。

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

这两种说法有什么区别?我想知道为什么这种改进会奏效。

【问题讨论】:

  • 如果 UserTable 有一个名为“Name”的行并包含 4 条记录,其中包含 Tom——您的查询应该可以工作。
  • 你就是这样做的。我认为您在其他地方遗漏了一些东西。
  • 你不在你的query 对象上做一个FirstOrDefault()First() 吗?因为这应该是完全正确的。

标签: c# linq linq-to-sql linq-to-entities


【解决方案1】:

试试

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

这行得通吗?

【讨论】:

  • 澄清:通过将查询包装在 ToList() 中,您可以强制查询立即运行。如果这解决了您的问题,那是因为您正在进行查询、更改数据,然后实际运行它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
  • 2011-11-02
  • 2014-09-04
相关资源
最近更新 更多