大家好! 我刚刚在LINQ查询中遇到了超时问题。 我有3个表:工作,项目和子项目。
Projects:
+--------+
| Id |<--+<--+
| Name | | |
+--------+ | |
SubProjects: | |
+--------+ | |
+->| Id | | |
| | Name | | |
| | ProjId |---+ |
| +--------+ |
| Work: |
| +------------+ |
| | Id | |
| | Type | |
| | ProjId |---+
+--| SubProjId | (nullable)
+------------+
我需要根据子项目创建报告:
我通过制作两个查询然后合并它们来解决它,但有时会超时。 我是用
做的result1.AddRange(result2);
因为
var temp = result1.Concat(result2);
抛出异常:
Internal .NET Framework Data Provider error 1004, 0, Unresolvable Var used in Command: VarType=Computed, Id=2090.
有人可以帮助我在一个查询中创建它吗?
答案 0 :(得分:2)
我不确定你的代码是什么样的,所以这可能不完美,但你可以试试这样的东西:
var result = from work in works
group work by work.SubProjId ?? work.ProjId into groupedWorks
select groupedWorks.ToList();
或
var result = works.GroupBy(work => work.SubProjId ?? work.ProjId).ToList();
答案 1 :(得分:0)
尝试此查询
var itemlist =contex.Work.where(x=>x.SubProjId !=null).Groupby(x=>x.SubProjId).Concat(Contex.Work.where(x=>x.SubProjId ==null).Groupby(x=>x.ProjId)).ToList();
答案 2 :(得分:0)
我猜这是你需要的:
var groups = from work in ctx.Works // the work table
group work // we want to group whole work "rows"
// we are grouping by project id and subproject id
by new { ProjId = work.ProjId, SubProjId = work.SubProjId }
into g // and we are calling the grouping 'g'
select g; // select the group
// example of doing something with the groupings
foreach (var group in groups)
{
var key = group.Key; // gets a { ProjId, SubProjId } tuple
foreach (var work in group)
{
// each work is a row in the Work-table
}
}