Squeak.ru - шаблоны программирования

Использование запроса LINQ для фильтрации, но он выбирает конкретный ключ много раз

Привет всем, я пытаюсь сделать запрос из таблицы (_dtlayout), используя LINQ to SQL. Я пытаюсь выбрать имя столбца FK_DataPoint. Но когда я отлаживаю его, он много раз попадает в этот столбец. Он не выдает никаких ОШИБОК, но с точки зрения производительности это серьезная проблема. Я знаю, что использую предложение Where, которое переходит к каждой строке и фильтрует ее. Но есть ли лучший способ собрать этот код, чтобы отфильтровать этот столбец DATAPOINT. Спасибо .

int? dataPointKey = _dtLayout.AsEnumerable().Where(row => 
            row.Field<int?>"FK_FinancialStatementTemplateSectionItem") ==  
            colDef.FK_FinancialStatementTemplateSectionItem 
            && row.Field<int?>("RowNumber")== columnItem.RowNumber 
            && row.Field<int?>("ColumnNumber") ==colDef.ColumnNumber 
            && row.Field<int?>("ItemNumber") == columnItem.ItemNumber)
            .Select (row=>row.Field<int?>("FK_DataPoint")).FirstOrDefault();

Спасибо

08.08.2014


Ответы:


1

Вы можете выполнить фильтрацию с помощью FirstOrDefault, а затем получить желаемое значение:

var row = _dtLayout.AsEnumerable().FirstOrDefault(row => 
        row.Field<int?>"FK_FinancialStatementTemplateSectionItem") ==  
        colDef.FK_FinancialStatementTemplateSectionItem 
        && row.Field<int?>("RowNumber")== columnItem.RowNumber 
        && row.Field<int?>("ColumnNumber") ==colDef.ColumnNumber 
        && row.Field<int?>("ItemNumber") == columnItem.ItemNumber);

int? dataPointKey = row != null ? row.Field<int?>("FK_DataPoint") : null;
08.08.2014
  • Разве .AsEnumerable() сначала не запрашивает всю таблицу? 08.08.2014
  • Я предполагаю, что _dtLayout является datatable... если это не так, то да, он извлекает всю запись из базы данных. 08.08.2014
  • нет никакой разницы между FirstOrDefault VS Where().FirstOrDefault() , ваш код просто лаконичен. stackoverflow.com/questions/8059285 / 08.08.2014
  • EnumerableRowCollection ‹int?› не имеет определения для поля, и лучшее расширение System.Data.DataRowExtension.Field‹T›(System.Data.DataRow) имеет некоторые недопустимые расширения. IT выдает эту ошибку в операторе условия, где значение TRUE, мы берем FK_DataPoint из строки VAR. 08.08.2014
  • Я почти уверен, что вы не используете код, который я вам предоставил 08.08.2014
  • Я пробовал не работает. Поэтому я пытаюсь найти работу вокруг. Спасибо за вашу заботу. Я опубликовал ошибку. Мы пытаемся получить поле типа ‹int?›, но ПОЛЕ отсутствует для строки переменной. 08.08.2014
  • Теперь я знаю проблему. Запрос LinQ, который я использую, фильтрует правильный DATAPOINT. У меня есть этот запрос в цикле, который зависит от выбранного периода счета, фонда, CLass во многих сценариях, поэтому его необходимо полностью изменить. В любом случае, большая головная боль, спасибо за вас. 20.08.2014
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...