2

という名前のテーブルがありますindustries。これで私のフィールドは

  • workfor_id
  • workfor_usr_id
  • workfor_industry_id.

の同じ値でworkfor_id、私は異なる を持っていますworkfor_industry_id

foreach (var k in us){ 
    var ind = dbContext.industries.Where(i => i.workfor_id == 
        k.id).Select(i => i).FirstOrDefault(); 
    string ind2 = k.industry; 
    var industryParts =   ind2.Split(','); 
    var o = (industryParts.Length); 
    for (c = 0; c < o; c++){  
    ind.workfor_id = Convert.ToInt16(k.id); 
    ind.workfor_industry_id = Convert.ToInt16(k.industryid); }
     }

workfor_industry_id フィールドを更新するために、foreach ループ内に内部ループを実装して、workfor_industry_id の値を取得しました。ここでは、同じレコードが異なる workfor_industry_id でオーバーロードされています。

これを実装する方法を教えてください。

4

1 に答える 1

0

更新 この更新では、もう少しエラー チェックを追加し、-1 が industry_id の有効な値ではないことを前提としています

short GetShort(string value) {
  short returnValue;
  value = (value ?? string.Empty).Replace("\"",null);
  return short.TryParse(value, out returnValue) ? returnValue : (short)-1;
}

foreach (var k in us){ 
  var id=Convert.ToInt16(k.id);
  var toRemove=from i in dbContext.industries
               where i.workfor_id == k.id
               select i;
  var toAdd = from x in (k.industry ?? string.Empty).Split(',')
              select new Industry { 
                      workfor_id=id,
                      workfor_industry_id=GetShort(x)
                    };

  dbContext.industries.DeleteAllOnSubmit(toRemove); 
  dbContext.industries.InsertAllOnSubmit(toAdd.Where(x=>x.workfor_industry_id != -1));

}
dbContext.SubmitChanges();
于 2012-10-11T10:27:24.830 に答える