我有一个共享点列表,我们称之为学生。
name | surname | username
------|---------|----------
test | test1 | test11
test2 | test2 | test22
test3 | test3 | test33
我根据经理保留学生姓名,添加到共享点列表中;
String.Join(",", ListBox2.Items.Cast<ListItem>().Select(i => i.Text).ToArray());
我有另一个列表让我们称之为管理
manager | students
--------|---------------
man1 | test11,test22
man2 | test33,test11
所以我需要的是柜台表中每个学生的经理人数;
studentuName | count
-----------------|---------
test11 | 2
test22 | 1
test33 | 1
我将它们称为列表(会有更多更好的方法来调用它们,我只是举例)
List<string> students (has value "test11", "test22", "test33")
List<string> manages (has value "test11,test22" , "test33,test11")
那么我怎样才能得到这个,每个学生有多少个经理,linq?
谢谢你
用@Servy 的答案编辑我可以得到
List<string> managers = new List<string> { "a,b", "a,b,c,d", "a,c", "c,d,f", "a,f,c,b" };
var query = managers.SelectMany(manager => manager.Select(student => new { manager, student }));
var finalQuery = query.GroupBy(pair => pair.student).Select(group => new { Student = group.Key, Count = group.Count() });
它还让我计算逗号“,”有什么办法可以避免这种情况吗?还有什么方法可以将它们与单个查询合并?