我的订单列表,需要以有效的方式来创建相似的订单的基团(优选地没有拉回所有的订单和手动比较)LINQ到实体上的多个字段分组通过OR运算符
每个订单具有与邮编附加字段和国家
,所以我需要下列规则创建组
如果订单有相同的(用户ID 或电子邮件地址)和(postco用户ID和电子邮件地址德和国家)代替组
鉴于以下实体和数据
public class Order
{
public int UserId { get; set; }
public int OrderId { get; set; }
public string Email { get; set; }
public int PostCode { get; set; }
public string Country { get; set; }
}
实施例数据
在OrderId UserId Email PostCode Country
1 1 blah1 111 au
2 1 blah2 111 au
3 2 blah1 111 au
4 2 blah2 111 au
5 3 blah3 111 nz
6 3 blah3 111 nz
实施例结果
Group 1
1 1 blah1 111 au
2 1 blah2 111 au
3 2 blah1 111 au
4 2 blah2 111 au
Group 2
5 3 blah3 111 nz
6 3 blah3 111 nz
的只有我能途径似乎认为通过手动迭代来做到这一点n在内存中
这可能与Linq干净地对实体做?
更新
研究这一段时间之后,我想我已经得出结论,只有这样才能实现我想要的是有可能做2个groupbys和手动记忆将它们组合起来
UPDATE2
想着这在逻辑上有看似在LINQ这个问题没有很好的解决方案,并可能需要使用SQL和CTE的或其他一些递归解决方案来完成。生病标记最接近的解决方案是正确的
这是最接近的解决方案,但我认为要正确地工作,生病必须采取稍微不同的方法。谢谢 – 2014-10-30 01:13:02