0

これは、各 TABLE1 に TABLE2 から複数の行が割り当てられているマスター詳細シナリオであり、次のようなことをしたいと考えています。

From a In TABLE1
Group Join c In TABLE2 On c.ID2 Equals a.ID Into Group
Select New ViewModel1 With {
    .COLUMN1 = a.COLUMN1,
    .COLUMN2 = a.COLUMN2,
    .SUBTABLE = New ViewModel2 With {
        .SUBCOLUMN1 = c.SUBCOLUMN1,
        .SUBCOLUMN2 = c.SUBCOLUMN2,
    }
}

これはどういうわけか可能ですか?

4

2 に答える 2

0

おそらく、次のことが役立ちます。

class Program
{
    public class A
    {
        public int ID { get; set; }
        public string COLUMN1 { get; set; }
        public string COLUMN2 { get; set; }
    }

    public class B
    {
        public int ID { get; set; }
        public int AID { get; set; }
        public string SUBCOLUMN1 { get; set; }
        public string SUBCOLUMN2 { get; set; }
    }

    static void Main(string[] args)
    {
        var listA = new List<A>{
            new A() { ID = 1, COLUMN1="COLUMN11",COLUMN2 = "COLUMN12"}, 
            new A() { ID = 2 ,COLUMN1="COLUMN21",COLUMN2 = "COLUMN22"}
        };

        var listB = new List<B>()
        {
            new B(){ID=1,AID = 1 },
            new B(){ID=2,AID = 1},
            new B(){ID=3,AID = 1},
            new B(){ID=4,AID = 2},
            new B(){ID=5,AID = 2}
        };

        //Group Join As Method Chain:
        var queryAsMethodChain = listA.GroupJoin(listB, a => a.ID, b => b.AID, (a, t) => new
        {
            ID = a.ID,
            COLUMN1 = a.COLUMN1,
            COLUMN2 = a.COLUMN2,
            SUBTABLE = t.Select(tt => new { tt.SUBCOLUMN1, tt.SUBCOLUMN2 })
        });


        //Group Join As Standard Method
        var queryAsStandardMethod = from a in listA
                                  join b in listB
                                  on a.ID equals b.AID into t
                                  select new
                                  {
                                      ID = a.ID,
                                      COLUMN1 = a.COLUMN1,
                                      COLUMN2 = a.COLUMN2,
                                      SUBTABLE = t.Select(tt => new { tt.SUBCOLUMN1, tt.SUBCOLUMN2 })
                                  };

    }
于 2014-08-13T14:40:18.387 に答える
0

これを意味しますか:

        var foobars = from foo in foolist
                      join bar in barlist on foo.Fooo equals bar.FooBar into t
                      select new
                      {
                          foo.Baar,
                          barbar = from bar in t
                                   select new { bar.FooBar, bar.BarFoo }
                      };

それは(おおよそ)あなたが説明したクエリを実行する方法です。

申し訳ありませんが、最初の要素にマップされていることを確認するために、質問を数回読み直さなければなりませんでした。

于 2014-08-13T14:42:43.833 に答える