C# 引用linq子查询中的外部字段

C# 引用linq子查询中的外部字段,c#,entity-framework,linq,C#,Entity Framework,Linq,我无法以正确的方式编写以下查询。 对于查询中的每个项目我希望首先加入有效配置 var query = someLinqQuery; var res = (from item in query join sub in ( from confs in db.ConfigurationsTable where confs.t_dat

我无法以正确的方式编写以下查询。 对于查询中的每个项目我希望首先加入有效配置

 var query = someLinqQuery;

 var res = (from item in query
                 join sub in 
                 (
                        from confs in db.ConfigurationsTable
                        where confs.t_date_start_val <= item.date && confs.t_date_end_val >= item.date
                        select new{ .. }
                        // First
                 ) on item.t_id equals sub.t_id into
            select c);
var query=someLinqQuery;
var res=(来自查询中的项
加入
(
从db.ConfigurationsTable中的confs
其中confs.t_date_start_val=item.date
选择新{..}
//首先
)在item.t_id上等于sub.t_id到
选择c);
项在子查询中不可见。
还有,我如何才能从子查询中只提取第一项?

您的帖子中有一些误解

项在子查询中不可见

这是因为子查询是
联接的一部分。联接中涉及的子查询是独立的,彼此不可见。是
join
操作通过一些字段将它们关联起来

如果要查看子查询中的
,请使用
from
而不是
join

from item in query
from sub in 
(
    // Here you can access the item
)
还有,如何仅从子查询中获取第一项

可以,但不能使用
join
运算符,因为
join
运算符将两个集关联起来

因此,要么执行a,然后从内部集合中获取第一个元素:

from item in query
join sub in (...) on item.t_id equals sub.t_id into subs
let sub = subs.FirstOrDefault()
或者使用相关子查询并获取第一个元素:

from item in query
let sub = (from confs in db.ConfigurationsTable
           where confs.t_date_start_val <= item.date && confs.t_date_end_val >= item.date
               // Here is the correlation (confs field could be different)
               && confs.t_id == item.t_id
           select new{ .. }
          ).FirstOrDefault()
来自查询中的项
让sub=(来自db.ConfigurationsTable中的conf)
其中confs.t_date_start_val=item.date
//这是相关性(confs字段可能不同)
&&confs.t\u id==item.t\u id
选择新{..}
).FirstOrDefault()

您遇到了什么错误?@Glubus item在子查询中不可见,而且我也不知道如何从子查询中获取第一个,您是这么说的。现在你得到了什么错误?如中所示,当您尝试运行程序时,为什么不运行?@Glubus显然我有一个编译错误,当前上下文中不存在项。最后一个看起来不错,我很快会检查它。我不知道如何使用其他两个。