【问题标题】:Select rows without joining other tables regarding other tables选择行而不加入关于其他表的其他表
【发布时间】:2018-01-13 07:15:57
【问题描述】:

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

我在使用 linq 时遇到问题。 我想带一个表格数据..(我不想加入它..因为我希望它被gridview的自动删除和自动编辑按钮删除和编辑)

但是我迷失了 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

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

edit : 它表示查询主体必须以 select 子句或 group 子句结尾

【问题讨论】:

  • 怎么样,到底是不是不行?你能用至少可以编译的代码替换你的代码吗?目前,这是非法的。一些示例问题 - 缺少分号,使用 Select 创建 Boolean 的 IEnumerable,在没有布尔搜索对象的 IEnumerable&lt;Boolean&gt; 上使用 .Contains(我假设 s.soIdx 不是布尔值,使用没有以 select 子句结尾。
  • 我建议解决问题 - 首先尝试使用 LINQPad 或控制台应用程序(从等式中消除 ASP.NET)查询数据,看看是否可行。另见stackoverflow.com/help/mcve

标签: c# asp.net linq


【解决方案1】:

这里的错误信息很清楚。您的查询(项目)没有以 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;

【讨论】:

  • 它说'System.Linq.IQueryable'不包含'Contains'的定义和最佳扩展方法重载'System.Linq.ParallelEnumerable.Contains(System.Linq .ParallelQuery, TSource)' 有一些无效参数,我不知道这是什么意思。
  • 很抱歉没有检查您的其余查询。我已将您的布尔语句移至 where 子句并选择 salesOrder_T id 进行比较。
【解决方案2】:

我想回答这个问题,因为我以完全不同的方式解决了这个问题。 事实证明,在 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)

然后,使用它。 再说一次,我不确定这是做事的好方法, 但它既简单又有效。

【讨论】:

    猜你喜欢
    • 2021-05-16
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多