Linq-to-sql - 查询未过滤

时间:2010-07-28 21:41:42

标签: linq-to-sql

我是Linq的新手,我正在使用Linq-to-Sql,如下所示。但是在下面的示例中,我的where子句永远不会被执行,结果查询会尝试从我的表中获取所有记录,甚至忽略take方法。

有人可以指出我做错了吗

        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();

1 个答案:

答案 0 :(得分:3)

你的第二行......

baseQry.Where(a => a.tab_id == theId);

...本质上是一个无操作,因为生成的查询不会转移到.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();