1

私は2つのリストを持っています

    リストA リストB
    ID FirstName DepartmentID ID FirstName DepartmentID
    5 ピーター ヌル 5 ピーター 1
    9 スティーブ ヌル 9 スティーブ 2
    16 マーク ヌル 16 マーク 3

LINQ を使用してこれらのリストを比較し、両方のリストの ID が等しい場合は、最初のリストである A リストに DepartmentID を設定します。

前もって感謝します。

4

5 に答える 5

2
ListA.ForEach(a=>a.DepartmentID = ListB.Any(b=>b.ID == a.ID) ? ListB.First(b=>b.ID == a.ID).DepartmentID : null);

編集:nullをチェックしたい場合。

于 2012-04-09T13:56:49.457 に答える
1

あなたはそれらに参加することができます。次に、結果を列挙し、変更を保存します。

var results = from a in ListA
              join b in ListB on ai.ID equals bi.ID
              select new
              {
                  itemA = a,
                  itemB = b
              };

foreach(var result in results)
{
    // This was not listed as a requirement, but it may be a valid check
    if (itemA.FirstName == itemB.FirstName)
    {
        itemB.DepartmentID = itemA.DepartmentID;
    }
}

DataContext.SubmitChanges();
于 2012-04-09T13:59:28.117 に答える
0

別のリストを使用して次のコードを使用して何ができるか

var temp = from ai in ListA 
        join bi in ListB on ai.id equals bi.id
        select bi;

var ListC = temp.ToList();
于 2012-04-09T13:44:58.523 に答える
0
var replacements = ListA
    .Where(a => a.DepartmentID == null)
    .Join(ListB, 
         a => a.ID, 
         b => b.ID, 
         (a, b) => new { Source = a, Replacement = b }
    );

foreach (var item in replacements)
{
    // here you could perform more replacements
    item.Source.DepartmentID = item.Replacement.DepartmentID;
}
于 2012-04-09T14:00:52.860 に答える