我的訂單列表,需要以有效的方式來創建相似的訂單的基團(優選地沒有拉回所有的訂單和手動比較)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