2

私はc#に2つのコレクションを持っています

A: {
      {id:4, name:"", age:1},
      {id:3, name:"", age:3},
      {id:2, name:"", age:5},
}

B: {
      {id:2, name:"aa"},
      {id:4, name:"bb"},
      {id:3, name:"cc"},
}

コレクションBに従ってコレクションAを埋めたい

A: {
      {id:2, name:"aa",age:5},
      {id:4, name:"bb",age:1},
      {id:3, name:"cc",age:3},
}

これどうやってするの?(linqを使用する必要がありますか?)

私が使用した:

   private static void FillIsCpHidden(ref Collection A)
        {
            var B= CollectionB.ToDictionary(item => item.id);

            foreach (var item in A)
            {
                item.name= B[item.id].name;
            }
        }
4

4 に答える 4

4

Bから辞書を作成できます

var dictB = B.ToDictionary(b=>b.id);

次に、新しいリストを作成します。

var c = A.Select(a=>new{ a.id, name=dictB[a.Id].name,a.age   });
于 2012-04-30T06:53:27.740 に答える
0

Linqを試すことができます

 var collectionB = collectionA.Select(p=>new B() { id=p.id, name=p.name});

また

var collectionA = collectionB.Select(p=>new A() { id=p.id, name=p.name});
于 2012-04-30T06:52:05.510 に答える
0

結合を使用できます:

var result = a.Join(b,
                    o => o.Id,
                    i => i.Id,
                    (o, i) => new { o.Id, i.Name, o.Age });
于 2012-04-30T07:13:07.230 に答える
0

この問題を解決するには、LINQ を使用します。

    var d = (from i in A select new { id = i.id, age=i.age, 
name = (from b in B where b.id == i.id select b.name).SingeleOrDefault()}).ToList();

新しい変数を作成しない別の可能性:

  A =  A.Select(d=>new{ d.id, name=a=>new{ a.id, name=dictB[a.Id].name,d.age})
于 2012-04-30T06:50:52.810 に答える