私は共有ポイントのリストを持っています。これを学生と呼びましょう。
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() });
また、コンマ「、」の数も返されます。これを回避する方法はありますか? また、それらを単一のクエリでマージする方法はありますか?