1

XLSドキュメントからデータを読み取っていて、優れたLINQtoExcelライブラリを使用しています。私が抱えている問題は、LINQの処理に関する問題です。

エクセルシートから新しいインシデントと更新されたインシデントを読みました。したがって、インシデントがデータベースにすでに存在するかどうかを確認し、存在する場合は、そのインシデントに接続してから、読み取ったExcelのすべての新しいデータで更新します。いくつかのコード:

var excel = new ExcelQueryFactory("filepath");

var getincident = from jj in excel.Worksheet<Incident>("Sheet1")
                  select jj;

foreach (var incident in getincident)
{
    if (incident.CallId.Trim() == "")
        break;
    if (exists(incident.CallId, context))
    {
        incident.id = (from b in context.Incidents
                       where b.CallId == incident.CallId
                       select b.id
                      ).First();
        context.Incidents.Attach(incident, true);
    }
    else
    {
        context.Incidents.InsertOnSubmit(incident);
    }

    context.SubmitChanges();

}

存在は、インシデントが存在するかどうかの簡単なチェックです。

private bool exists(string piCallId, DataClasses1DataContext context)
{
    return (from b in context.Incidents
            where b.CallId == piCallId select b
           ).Any();
}

すべての新しいデータを追加する前に、まずインシデントが存在するかどうかを確認してから、変更を送信する方法が必要です。助けてください。

4

1 に答える 1

0

これはあなたが望むことをしますか?

var existingIncident = 
    (from b in context.Incidents
     where b.CallId == incident.CallId
     select b
     ).SingleOrDefault();

 if (existingIncident != null)
 {
      existingIncident.xxx = incident.xxx;
      existingIncident.yyy = incident.yyy;
      ...
 }
 else
    context.Incidents.InsertOnSubmit(incident);
于 2010-11-13T17:12:25.460 に答える