powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / работа с linq to sql, c#
25 сообщений из 28, страница 1 из 2
работа с linq to sql, c#
    #38831808
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, уважаемые форумчане.

Возникла следующая, казалось бы, простая задача: вывести запись, где значение определенного поля максимальное..

У меня есть таблица:

Статистика
FIO string
-----------
result int
----------

Я хочу средствами Linq to sql вывести запись, где значение result максимальное. Пишу на c#, вот что я пробовал:

dataGridView1.DataSource = db.Statistics_rl_lv_pl.Max(x=>x.rezult);

dataGridView1.DataSource = db.Statistics_rl_lv_pl.OrderByDescending(x => x.rezult).FirstOrDefault();

Не пойму, в чем может быть загвоздка..
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831811
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neverend12,

Max By
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831819
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

У меня не находит такого метода..
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831829
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neverend12,

Виноват, это метода EF не поддерживает...
А в чем проблема с последним вариантом? Должно работать.
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831839
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какие интерфейсы поддерживает DataSource и какой объект вернет FirstOrDefault()?
Вам нужно ставить в DataSource коллекцию объектов.
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831847
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
List<Class1> max = new List<Class1>{list.OrderByDescending(x => x.Aaa).FirstOrDefault()};


Код: c#
1.
     dataGridView1.DataSource = new List<Statistics_rl_lv_pl>{db.Statistics_rl_lv_pl.OrderByDescending(x => x.rezult).FirstOrDefault()};
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831851
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Это просто Linq to sql класс, который я сформировал для того, что-бы перенести БД из ms sql server в visual studio. Метод FirstOrDefault вернет первый элемент последовательности или элемент по умолчанию...Но в том то и дело, что почему-то не хочет работать.. не пойму в чем проблема тут...
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831857
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neverend12,

Вернет первый элемент из коллекции.
Что именно не работает - запрос или DataSource?
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831858
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,
Спасибо! это помогло. А вы не могли бы мне еще подсказать, как это дело можно написать другим способом? На T-sql.
Я пробовал так:
dataGridView1.DataSource = (from r in db.Statistics_rl_lv_pl
select r.rezult).Max();
Но тоже, безрезультатно
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831859
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

в моем случае не работал запрос, тк я если просто запрашивал dataGridView1.DataSource = db.Statistics_rl_lv_pl, то выводился просто весь список
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831862
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neverend12,

Конечно, потому что linq to sql так же как и lambda-expression вернет элемент коллекции, а Вам нужен объект, поддерживающий IList или IListSource. К тому же у Вас неправильно написан запрос.
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831872
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Что-то я в терминологии немного запутался..

Я думал что лямбда-выражение это элемент linq to sql.. Получается это разные вещи?
Т.е. конструкция

from ...
where..
Select

это linq to sql, а точечный синтаксис - это уже другое (лямбда-выражение)?
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831876
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"точечный синтаксис" - текучий синтаксис - это, собственно и есть методы Linq

from... where и т.п. - синтаксический сахар для удобства программиста - компилятор преобразует его в точечный синтаксис

лямбда-выражение (напр. x=>x.rezult) - это делегат, это не специфично для Linq, просто используется им

хорошо бы учебник почитать
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831877
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neverend12,

Вот Ваш запрос
Код: c#
1.
2.
3.
4.
            var max = ((from p in list
                                group p by p.Aaa
                                into grp
                                select grp.OrderBy(g => g.Aaa)).First()).ToList();



Нет, я linq to sql опрометчиво обозвал Query Expressions. Выражения linq to sql можно писать с помощью Query Expressions и Lambda Expressions. Последнее имеет более богатый и расширенный набор операторов.
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831883
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Спасибо!!..надо бы немного почитать про все это дело, а то путаюсь в терминах
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831890
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Если вы еще не ушли..

почему-то запрос работает наоборот, т.е. выдает запись с наименьшим rezult. Я подумал, что стоит сделать OrderByDescending, но почему-то все-равно выдает наименьший резальтат
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831891
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neverend12,

Код: c#
1.
2.
3.
4.
            dataGridView1.DataSource = (from r in db.Statistics_rl_lv_pl
                                        group r by r.rezult
                                            into grr
                                            select grr.OrderBy(g => g.rezult)).First().ToList();



Код: c#
1.
2.
3.
4.
            dataGridView1.DataSource = (from r in db.Statistics_rl_lv_pl
                                        group r by r.rezult
                                            into grr
                                            select grr.OrderByDescending(g => g.rezult)).First().ToList();
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831892
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neverend12,

Покажите запрос
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38831903
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Вон я выше написал запросы..Или Вы хотели результат увидеть?
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38832462
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neverend12,

Какие-то непонятные запросы.
Зачем нужна группировка?
Для чего смешиваете query и method синтаксис?

А вообще запрос для получения значения с максимальным rezult очень простой:
Код: c#
1.
2.
3.
(from r in db.Statistics_rl_lv_pl
orderby r.rezult descending
select r).FirstOrDefault();
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38832495
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PA,
Тоже почему-то не работает Ваш запрос..Хотя если убрать FirstOrDefault все нормально выводится с сортировкой...
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38832505
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot neverend12]Тоже почему-то не работает Ваш запрос[quot]
Вы бы расшифровали, что именно не работает.
Попробую протелепатировать - вы забыли результат запроса в коллекцию завернуть, как вам уже здесь советовали.
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38832506
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PA,

Я может чего-то не совсем понимаю...
Я сделал так:
Код: c#
1.
2.
3.
4.
var r1 = (from r in db.Statistics_rl_lv_pl
             orderby r.rezult descending
             select r).FirstOrDefault();
            textBox4.Text = r1.rezult.ToString();



И результат показался, к тому-же, переменная r1 имеет запись запроса, но в датагрид не попадает почему-то....
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38832567
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neverend12,

Конечно оно не попадет в грид. textBox4.Text - это как соотносится к гриду?
...
Рейтинг: 0 / 0
работа с linq to sql, c#
    #38832909
neverend12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Текстбокс я вставил для проверки..Я думал, запрос не работает..Так как мне в грид вставить результат запроса, не подскажите?
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / работа с linq to sql, c#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]