基本上是为了让您了解设计。我有一个与另一个表有一对多关系的项目列表。可以将项目分配给多个协议,但也可以分配给任何协议。如果没有,则需要"未分配"。第一部分很有效,给了我每个项目所需要的东西。在对其进行分组后,我无法获得分配给该组的协议的明确列表。请参阅下面的代码,了解我到目前为止所拥有的内容:
var groupedItems = ctx.Items
.Where(dk=>itemExpression)
.Select(dk => new
{
dk.ItemID,
dk.IntItemNumber,
ProtocolStr = dk.ItemProtocols.Any()
? dk.ItemProtocols.Select(p => p.Protocol.ProtocolName)
.ToList()
: new List<string> { "Unassigned" },
})
.GroupBy(d => d.ItemID)
.Select(d => new CustomClass
{
ItemID = d.Key,
Min = d.Min(dd => dd.IntItemNumber),
Max = d.Max(dd => dd.IntItemNumber),
ProtocolsStr = String.Join(
",",
d.SelectMany(dd=>dd.ProtocolStr.Distinct()).ToList()),
OrderQty = d.Count()
})
.ToList()
运行时,我收到错误:Could not format node 'ClientQuery' for execution as SQL.
基本上,我想要这样的结果:
ItemId Min Max OrderQty Protocols
1 100005 299998 119797 Unassigned, Protocol1, Protocol2
2 100003 300000 79799 Unassigned, Protocol2
3 300029 399999 24795 Protocol1
我假设问题是选择中嵌套的选择。