1

この情報を含む1つのテーブル[T1]があります

  1. ID
  2. ユーザーID
  3. 他の...

2台目[T2]は

  1. ID
  2. ユーザーID
  3. 名前

関係は T1 からの 1 人のユーザーであり、多くの T2 を持つことができます

のような結果を得たい

  1. ID = 番号
  2. ユーザー ID = 番号
  3. 配列[t2.name,t2.name,t2.name]

SQLへの私のリングは

 var result = (from t1 in context.t1
              join t2 in context.UserID on t1.ID equals t2.UserID 
              select new CLASS
              {
                  ID = t1.ID,
                  UserID = t1.UserID,
                  Names = t2.name
               }).Take(10).ToList();

しかし、これにより、各 t2.name が別々の行として結果が得られます。配列内のすべての名前を収集するにはどうすればよいですか?

LINQ to SQL、ASP.NET C# 4.0

4

3 に答える 3

1

このようなものが機能するはずだと思います

var result = (from t1 in context.t1
              join t2 in context.UserID on t1.ID equals t2.UserID 
              select new CLASS
              {
                  ID = t1.ID,
                  UserID = t1.UserID,
                  Names = (from t2 in context.t2
                           select t2.Name
                           where t2.userID = t1.userID).toArray(),
              }).Take(10).ToList();

それが役に立てば幸い

于 2012-05-06T16:52:37.037 に答える
0

結果を ID/UserID でグループ化する必要があります。

 var result = (from t1 in context.t1
              join t2 in context.UserID on t1.ID equals t2.UserID
              group by new { t1.ID, t1.UserID } into g
              select new CLASS
              {
                  ID = g.Key.ID,
                  UserID = g.Key.UserID,
                  Names = g.ToArray()
              }).Take(10).ToList();

ただし、LINQ to SQL クラスが適切に準備されている場合、そのようなクエリは次のように作成できます。

var result = from t1 in context.t1 select new { id = t1.id, names = t1.t2s.ToArray() };
于 2012-05-06T16:48:54.703 に答える
0

結合を使用する必要はありません。linq デザイナーで 2 つの linq エンティティの b/n 関係を作成すると、次のようなクエリを実行できます。

var q = from t in context.t1
        select new { id = t1.id, names = t1.t2s.Select(t => t.Name).ToArray() };
于 2012-05-06T16:48:01.930 に答える