Вопрос с учетом LINQ to Excel - PullRequest
       14

Вопрос с учетом LINQ to Excel

1 голос
/ 13 ноября 2010

Я читаю данные из документа XLS и использую превосходную библиотеку LINQ to Excel .Проблема, которая у меня есть, больше связана с работой с LINQ.

Я читаю новые и обновленные инциденты из листа Excel.Поэтому я хочу проверить, существует ли инцидент в базе данных, и если это так, я хочу связать его с этим инцидентом, а затем обновить его всеми новыми данными из 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();
}

Мне нужно сначала проверить, существует ли инцидент, прежде чем все новые данныедобавьте, а затем отправьте изменения.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 13 ноября 2010

Делает ли это то, что вы хотите?

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);
...