Linq to sql Linq到sql-未筛选查询
我对Linq真的很陌生,我正在使用Linq到Sql,如下所示。但是,在下面的示例中,我的where子句从未执行,结果查询尝试从我的表中获取所有记录,甚至忽略take方法 有人能指出我做错了什么吗Linq to sql Linq到sql-未筛选查询,linq-to-sql,Linq To Sql,我对Linq真的很陌生,我正在使用Linq到Sql,如下所示。但是,在下面的示例中,我的where子句从未执行,结果查询尝试从我的表中获取所有记录,甚至忽略take方法 有人能指出我做错了什么吗 var baseQry = db.Table; baseQry.Where(a => a.tab_id == theId); baseQry.Select(o => new { o.name,
var baseQry = db.Table;
baseQry.Where(a => a.tab_id == theId);
baseQry.Select(o => new
{
o.name,
o.display_name,
o.type,
o.info,
time_stamp = (Convert.ToDateTime(o.timestamp).ToLongDateString())
}).Take(10);
baseQry.ToList();
你的第二行
baseQry.Where(a => a.tab_id == theId);
…本质上是一个no-op,因为生成的查询没有转入.Select子句中
您需要将其更改为:
var baseQry = db.Table;
var results = baseQry
.Where(a => a.tab_id == theId)
.Select(o => new
{
o.name,
o.display_name,
o.type,
o.info,
time_stamp = (Convert.ToDateTime(o.timestamp).ToLongDateString())
})
.Take(10)
.ToList();
谢谢,马特,是的,这很有效。我之所以尝试将其分解,是为了能够根据用户输入动态添加更多where子句。从语法上说,我相信我的代码似乎和你的代码相似,但有一点,你的代码有效,而我的代码无效!!。我曾研究过使用PredicateBuilder和Scott的动态linq库,但在讨论所有这些之前,我想尝试一些简单的方法。任何解释都将不胜感激。IQueryable是你的朋友()。查询的子句(.Where、.Select、.Take)实际上都没有检索数据。它们只是建立一个查询,然后在调用ToList()时执行。您将在LINQ世界中看到这种称为“延迟执行”的方法。好的方面是,只要将查询片段的返回值保存为IQueryable,就可以继续添加它们以进一步修改查询。我希望我能解释清楚。谢谢。我能够使用IQueryable并使其工作。不过相当冗长。非常感谢你的帮助,马特。