Синтаксис LINQ, где строковое значение не является нулевым или пустым

Можно очистить Высокий звук + история F2 в dconf редакторе.

Установка dconf редактор:

Хит Высокий звук + Ctrl + T и выполненный следующая команда:

sudo apt-get install dconf-tools

Или поиск "dconf-инструментов" в Центре программного обеспечения и установке это оттуда.

Очищающаяся История:

Когда-то установленная, Нажатая супер клавиша (ключ окон), чтобы открыть тире Unity и поиск "dconf редактор" и открыть его.

Перешли к Desktop > Unity > runner и нажимают на "Set to default" в правом нижнем углу.Именно!

enter image description here

36
задан Jon Erickson 2 September 2009 в 17:08
поделиться

3 ответа

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=367077

Описание проблемы
Можно написать LINQ to SQL, который получает все строки которые имеют либо пустую, либо пустую строку в данном поле, но для этого невозможно использовать string.IsNullOrEmpty, хотя многие другие строковые методы сопоставляются с LINQ to SQL. Предложенное решение Разрешить string.IsNullOrEmpty в предложении where LINQ to SQL, чтобы эти два запроса давали одинаковый результат:

var fieldNullOrEmpty =
from item in db.SomeTable
where item.SomeField == null || item.SomeField.Equals(string.Empty)
select item;

var fieldNullOrEmpty2 =
from item in db.SomeTable
where string.IsNullOrEmpty(item.SomeField)
select item;

Другое чтение:
1. DevArt
2. Dervalp.com
3. StackOverflow Post

43
ответ дан 27 November 2019 в 05:57
поделиться

Это не сработает для Linq2Objects, но не сработает для Linq2SQL, поэтому я предполагаю, что вы говорите о провайдере SQL или о чем-то подобном.

Причина связана с способ, которым поставщик SQL обрабатывает ваше лямбда-выражение. Он принимает это не как функцию Func , а как выражение Expression > . Он берет это дерево выражений и переводит его в фактический оператор SQL, который отправляет на сервер.

Переводчик знает, как обрабатывать базовые операторы, но не знает, как обрабатывать методы для объектов. Он не знает, что IsNullOrEmpty (x) переводится в return x == null || x == string.empty . Это должно быть сделано явно, чтобы произошел перевод в SQL.

15
ответ дан 27 November 2019 в 05:57
поделиться

Это нормально работает с Linq to Objects. Однако у некоторых поставщиков LINQ возникают трудности с запуском методов CLR как части запроса. Это особенно верно для некоторых поставщиков баз данных.

Проблема в том, что поставщики БД пытаются переместить и скомпилировать запрос LINQ как запрос базы данных, чтобы предотвратить перетягивание всех объектов по сети. Это хорошо, но иногда ограничивает гибкость ваших предикатов.

К сожалению, без проверки документации поставщика трудно всегда точно знать, что будет или не будет поддерживаться непосредственно поставщиком. Похоже, ваш провайдер разрешает сравнения, но не проверку строки. Я предполагаю, что в вашем случае это, вероятно, самый хороший подход, который вы можете получить. (На самом деле это не сильно отличается от проверки IsNullOrEmpty,

2
ответ дан 27 November 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: