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显然我有一个编译错误,当前上下文中不存在项。最后一个看起来不错,我很快会检查它。我不知道如何使用其他两个。