选择行而不连接其他表关于其他表

时间:2017-12-19 22:23:21

标签: c# asp.net linq

我正在使用asp.net web forms 4.5版本。

我遇到linq问题。 我想带一个表数据..(我不想加入它...因为我希望它被gridview的autodelete和autoedit按钮删除和编辑)

但是我迷失了linq。

我想做这样的事情......

public Iqueryable detailGrid_getData(){
    string fromDStr = fromTBox.Text;
    DateTime fromD = Convert.ToDateTime(fromDStr);

    string toDStr = toTBox.Text;
    DateTime toD = Convert.ToDateTime(toDStr);

    var items = from s in db.salesOrderDetail_T where 
    db.salesOrder_T
    .Select(so => so.poDate <= toD && so.poDate >=fromD)
    .Contatins(s.soIdx) && s.stat == stat;
    return items;
}

我从这里得到了这个想法:LINQ, select ID from Table where it does not match ID in another table

但由于某种原因,它不起作用。 有人会告诉我为什么这不起作用吗?

编辑:它表示查询正文必须以select子句或group子句结尾

2 个答案:

答案 0 :(得分:0)

此处的错误消息非常清楚。您的查询(项目)不会以select子句结束,我认为这就是您想要的:

var items = from s in db.salesOrderDetail_T where 
            db.salesOrder_T.Where(so => so.poDate <= toD && so.poDate >=fromD).Select(p=>p.Id).Contains(s.soIdx) 
            && s.stat == stat
            select s;

答案 1 :(得分:0)

我想回答这个问题,因为我认为它完全不同。 事实证明,在LINQ中,我可以通过很多方式解决问题。

这是我通过这个方式的方式.. 仍然不是LINQ的专家,而是得到它。

var items = from so in db.salesOrderDetail_T
    where so.poDate <= toD && so.poDate >= fromD
    select so.idx;
soIdxList = items.toList();
items = items.Where(it => soIdxList.Contains((int) it.soIdx)

然后,使用它。 再说一次,我不确定这是做事的好方法, 但它很容易且有效。