笛卡尔乘积为集团成员 [英] Cartesian Product for Group members
问题描述
我有2个或以上的团体如下面的表格:
<预类=郎无prettyprint-覆盖>
ID值的GroupId
1 A 1
2 b 1
3 C 2
4 D 2
现在我想告诉总的关系(总:2 * 2 = 4,因为我们有2组每一个有2名成员)象下面这样:
<预类=郎无prettyprint-覆盖>
A和ç
A和D
&B酒店放大器; C
&B酒店放大器; ð
或用三组:
<预类=郎无prettyprint-覆盖>
ID值的GroupId
1 A 1
2 b 1
3 C 2
4 D 2
5 E 3
6 F 3
我们有2 * 2 * 2 = 8的关系:
<预类=郎无prettyprint-覆盖>
A和C&放大器; Ë
A和D&放大器; E
&B酒店放大器; C&放大器; E
&B酒店放大器; D&放大器; Ë
A和C&放大器; F
比率和放大器; D&放大器; F
&B酒店放大器; C&放大器; F
&B酒店放大器; D&放大器; ˚F
不过,我怎么可以通过 LINQ表达式做到这一点?我要的结果在View(剃刀)来显示
更新:
我的意思是的在表小组成员的笛卡尔乘积。
组组到组
。移动第一组到结果
。然后对于每个剩余组
,他们一起与结果
:
的IEnumerable<串GT;结果;
组VAR =(从列表$ B $通过item.GroupId B组项目项目为GRP
选择grp.Select(T => t.Value))。了ToList() ;
结果= groups.First();
groups.RemoveAt(0);
groups.ForEach(委托(IEnumerable的<串>价值)
{
结果=(从价值
选择R的结果$ B $; B R从V ++ v).ToList();
});
I have 2 or more Groups like below in a table:
Id Value GroupId
1 A 1
2 B 1
3 C 2
4 D 2
Now I wanna show total relationships (total: 2*2=4 since we have 2 groups each one with 2 members) like below:
A & C
A & D
B & C
B & D
Or with three Groups:
Id Value GroupId
1 A 1
2 B 1
3 C 2
4 D 2
5 E 3
6 F 3
We have 2*2*2=8 relationships:
A & C & E
A & D & E
B & C & E
B & D & E
A & C & F
A & D & F
B & C & F
B & D & F
But, how can I do this via Linq Expression? I want the result to show in View(razor).
Update: My meaning is Cartesian Product of Group members in the Table.
Group the groups into groups
. move the first group into result
. Then for each remaining group
, join them with result
:
IEnumerable<string> result;
var groups = (from item in list
group item by item.GroupId into grp
select grp.Select(t => t.Value)).ToList();
result = groups.First();
groups.RemoveAt(0);
groups.ForEach(delegate(IEnumerable<string> value)
{
result = (from r in result
from v in value
select r + " " + v).ToList();
});
这篇关于笛卡尔乘积为集团成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!