Member 8358871 Ответов: 1

Как оптимизировать запрос linq


var rows1 = (from bb in dt3.AsEnumerable()
                                       where (bb.Field<string>("Request_ID") == Convert.ToString(newDt2.Rows[i1]["Request_ID"])
                                       && bb.Field<string>("Route_Header_ID") == Convert.ToString(newDt2.Rows[i1]["Route_Header_ID"]))
                                       select bb);


[Edit: MTH 8/17/2016: теги для кода]

Что я уже пробовал:

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

Karthik_Mahalingam

что такое П1?

Member 8358871

его любой индекс строки может быть равен 0,1,2...

Philippe Mori

Используйте кодовый блок для кода. Также покажите нам определение ваших данных. Покажите нам код, который вы пытаетесь использовать для соединения. Покажите нам, что вы получаете и чего ожидаете. Если данные большие, покажите подмножество данных.

Maciej Los

"Оптимизация запроса linq- ...в каком аспекте? Чего вы пытаетесь достичь? Что не так с этим запросом?

1 Ответов

Рейтинг:
2

Maciej Los

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

Ответ на вопрос: как оптимизировать linq-запрос? - все зависит от того, чего ты добиваешься.
Если вы хотите объединить обе таблицы по нескольким столбцам, вам необходимо использовать new{} оператор:

var rows1 = from bb in dt3.AsEnumerable()
           join dd in newDt2.AsEnumerable() on
               new {bb.Field<string>("Request_ID"),  dd.Field<string>("Request_ID"}
           equals
               new { bb.Field<string>("Route_Header_ID"), dd.Field<string>("Route_Header_ID")}
           select new {bb, dd};</string>


Подробнее на: c# - Как сделать соединения в LINQ на нескольких полях в одном соединении-переполнение стека[^]

Если вы хотите предоставить какую-либо другую операцию (left join, except и т. д.), пожалуйста, посмотрите здесь: 101 образцы LINQ в C#[^]
Для лямбда-стиля я бы рекомендовал этот сайт: Примеры LINQ 101 - стиль лямда [^]

Пожалуйста, будьте более конкретны и предоставьте более подробную информацию в следующий раз.


Member 8358871

Я использовал метод dt.select() вместо этого запроса linq.Его производительность в 3 раза выше, чем у этого linq-запроса. :)

Maciej Los

Ну, вы искали способ преобразовать SQL-запрос в Linq. Соответствует ли мое решение вашим первоначальным потребностям? Я верю, что это так. Поэтому, пожалуйста, примите мой ответ как решение (зеленая кнопка) формально, чтобы удалить ваш ответ из списка без ответа.