Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение строк двух таблиц средствами linq 
:(
    Опции темы
madFrame
Дата 18.4.2014, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 18.4.2014

Репутация: нет
Всего: нет



Всем привет!
Есть две таблицы(одна dbf файл), на сервер данные добавляются из dbf, причём данные в dbf часто меняются, как осуществить проверку по строчкам? Не понимаю саму концепцию алгоритма..  В этом куске кода просто добавляю все данные из файла на серв.:
    
Код

using (var context = new ObjectEntity())
                {
                    FileDBF DBF = new FileDBF();//класс для чтения дбф
                    DataTable dt = DBF.GetAll(@"C:\Users\Documents\BNKSEEK.DBF");
 
                    progressBar1.Maximum = dt.Rows.Count;                   
                    foreach (DataRow dr in dt.Rows)
                    {                       
                        Table row = new Table();
                        row.IDNT = dr.ItemArray[12].ToString();
                        и т.д......
 
                        context.Table.Add(row);
                        progressBar1.Value++;
                    }
                    context.SaveChanges();                  
                }
            }

PM MAIL   Вверх
madFrame
Дата 28.4.2014, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 18.4.2014

Репутация: нет
Всего: нет



Решил проблему.
=)
Кому интересно:

 
Код

using (var context = new ObjectEntity())
                {
                    FileDBF dbf = new FileDBF();
                    DataTable dt = dbf.GetAll(@"C:\Users\Documents\BNKSEEK.DBF");

                    progressBar1.Maximum = dt.Rows.Count;
                    progressBar1.Value = 0;

                    DataRow[] dataRows = new DataRow[dt.Rows.Count];
                    dt.Rows.CopyTo(dataRows, 0);

                    var entityRows = context.Table.Where(n => n.Id > 0);

                    IEnumerable<DataRow> data = dataRows.ToList();
                    IEnumerable<Table> rTables= entityRows.ToList();

                    foreach (var dr in data)
                    {
                        var table = rTables.FirstOrDefault(m => m.BIK == dr[12].ToString());
                        //Сушествует ли запись на сервере
                        if (table != null)
                        {
                            //Обновить запись
                            table .BIK = dr[12].ToString();      
                            // и т.д.
                  
                        }
                        else
                        {
                            //Добавить новую запись 
                            Table field = new Table ();
                            field.BIK = dr[12].ToString(); 
                            // и т.д.                       
                            context.Table .Add(field);
                        }                       
                        progressBar1.Value++;                     
                    }
                    context.SaveChanges();
                }
            }


Может ещё короче можно?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.