0

以下のコレクションから始めて、テストを満たす結果セットを返すために必要な Linq ステートメントは何ですか?

private List<dynamic> _results;

[SetUp]
public void SetUp()
{
    _results = new List<dynamic>
    {
        new {Id = 1, Names = new[] {"n1"}, Tags = new[] {"abc", "def"}},
        new {Id = 2, Names = new[] {"n2", "n3"}, Tags = new[] {"ghi"}},
        new {Id = 3, Names = new[] {"n1", "n3"}, Tags = new[] {"def", "xyz"}},
        new {Id = 4, Names = new[] {"n4"}, Tags = new string[] {}}
    };
}

private ILookup<string, string> GetOuterJoinedCollection(IEnumerable<dynamic> results)
{
    // ???
}

[Test]
public void Test()
{
    ILookup<string, string> list = GetOuterJoinedCollection(_results);

    Assert.That(list.Count, Is.EqualTo(4));
    Assert.That(list["n1"], Is.EquivalentTo(new [] { "abc", "def", "def", "xyz" }));
    Assert.That(list["n2"], Is.EquivalentTo(new [] { "ghi" }));
    Assert.That(list["n3"], Is.EquivalentTo(new [] { "ghi", "def", "xyz" }));
    Assert.That(list["n4"], Is.EquivalentTo(new string[] { }));
}

注: これは前の質問のフォローアップです:ネストされた for ループを使用して Lambda を Linq ステートメントに変換する

4

0 に答える 0