Хобрук: Ваш путь к мастерству в программировании

Получите отдельные данные из данных, представленных в веб-сервисах, с помощью linq

Я хочу получить только одну строку из нескольких строк с одним и тем же именем проекта из таблицы данных (например, если у нас есть две строки с одинаковым именем проекта, таблица данных должна быть загружена только с одной строкой и пренебречь другой). Я был используя веб-сервисы, которые имеют datatable.

Я хочу реализовать эту функциональность с помощью linq.

Я вставил свой код для datatable. Пожалуйста, помогите мне с рабочим кодом.

[WebMethod]
        public DataTable Get()
        {
            int a = 0;
            cmd = con.CreateCommand();
            con.Open();
            cmd = con.CreateCommand();
            cmd.CommandText = " Select PROJECTNAME,COMPANY,PROJECTSTATUS,STARTEDIN,COMPLETEDIN FROM CMPPROJECT WHERE STATUS ='" + a + "'";
            using (OracleDataAdapter sda = new OracleDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (DataTable dt = new DataTable())
                {
                    dt.TableName = "CMPPROJECT";
                    sda.Fill(dt);
                    return dt;
                }
            }
         }
11.11.2015

  • Можете ли вы сделать это на БД вместо этого? Кажется ненужным загружать обе строки, если нужна только одна. 11.11.2015
  • я проверял добавление функций linq, что для меня обязательно... :-( 11.11.2015
  • Даже с LINQ, я думаю, вы измените метод, который вы опубликовали? Поскольку SQL-запрос жестко закодирован в нем, почему вы не можете внести изменения? 11.11.2015
  • Я был на тренировке... я очень новичок в linq 11.11.2015
  • Мой вариант не требует LINQ. Требуется ли делать это только с помощью LINQ, или вам разрешено использовать любой другой метод? 11.11.2015
  • Нет шри... это единственный доступный вариант 11.11.2015

Ответы:


1

Вы можете создать объект DataView с методом ToTable, в котором вы можете передать true параметру distinct для выбора отдельных строк. Но это не имеет для меня никакого смысла. Я бы сделал это непосредственно в запросе выбора:

DataTable d = new DataTable("CMPPROJECT");
d.Columns.Add("PROJECTNAME");
d.Columns.Add("COMPANY");

d.Rows.Add(1, 1);
d.Rows.Add(1, 1);
d.Rows.Add(2, 2);

d = new DataView(d).ToTable("CMPPROJECT", true, "PROJECTNAME", "COMPANY");

Вот решение `linq:

var select = (from a in d.AsEnumerable()
              select new { c1 = a["PROJECTNAME"], c2 = a["COMPANY"] }).Distinct().ToList();

d.Clear();

foreach (var item in select)
    d.Rows.Add(item.c1, item.c2);
11.11.2015
Новые материалы

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..