相关疑难解决方法(0)

linq到实体,where where子句在哪里?(内在哪里)

我有一个表与一对多映射到一个表,该表具有多个到另一个表的映射.我想做以下事情:

var results = context.main_link_table
                     .Where(l => l.some_table.RandomProperty == "myValue" &&
                            l.some_table.many_to_many_table
                             .Where(m => m.RandomProperty == "myValue"));
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?第一部分可以工作但是在没有'内部WHERE'的情况下尝试它时,我无法访问many_to_many_table的属性,但是"内在的地方"显然无法编译.我基本上想要实现类似下面的SQL查询:

SELECT * from main_link_table
INNER JOIN some_table AS t1 ON t1.association = main_link_table.association
INNER JOIN many_to_many_table AS t2 ON t2.association = some_table.association
WHERE t1.RandomProperty = 'MyValue' AND t2.RandomProperty = 'MyValue'
Run Code Online (Sandbox Code Playgroud)

它看起来很简单,但我无法找到一种方法来实现它在一行linq中 - 使用多行来实现所需的效果返回太多的结果,我最终不得不循环它们.我也试过像:

var results = main_link_tbl.Include("some_table.many_to_many_table")
                           .Where(l => l.some_table.many_to_many_table.<property>
                                       == "MyValue")
Run Code Online (Sandbox Code Playgroud)

但是在这一点上我不能选择many_to_many_table的属性,除非我添加一个FirstOrDefault(),它会使效果无效,因为它不会搜索所有记录.

什么工作,但需要多行代码,并在后台返回由linq-to-entities框架构建的SQL查询中的太多结果:

var results = db.main_link_table.Include("some_table")
                                .Include("some_table.many_to_many_table")
                                .Where(s => s.some_table.RandomProperty 
                                            == "myValue")
                                .Select(s => s.some_table);

foreach(var result in results) { …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda linq-to-entities entity-framework

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×1

entity-framework ×1

lambda ×1

linq ×1

linq-to-entities ×1