EF4.1 LINQ, выбирая все результаты - PullRequest
3 голосов
/ 06 ноября 2011

Я новичок в запросах LINQ и EF, я обычно работаю с MySQL и не могу догадаться, как писать действительно простые запросы.

Я бы хотел выбрать все результаты из таблицы. Итак, я использовал так:

ZXContainer db = new ZXContainer();
ViewBag.ZXproperties = db.ZXproperties.All();

Но я вижу, что должен написать что-то внутри Всех (---).

Может ли кто-нибудь подсказать мне, как я могу это сделать? И если у кого-то есть хорошая ссылка для ссылок, я очень благодарен.

Ответы [ 5 ]

6 голосов
/ 06 ноября 2011

All() - это логическое вычисление, выполненное для всех элементов в коллекции (хотя сразу же возвращается значение false, когда оно достигает элемента, где оценка является ложной), например, вы хотите убедиться, что все указанные свойства ZX имеют определенное поле установлено как true:

bool isTrue = db.ZXproperties.All(z => z.SomeFieldName == true);

Что либо сделает isTrue истинным, либо ложным. LINQ обычно загружается медленно, поэтому, если вы вызываете db.ZXproperties напрямую, у вас есть доступ ко всем объектам как есть, но это не совсем то, что вы ищете. Вы можете загрузить все объекты в присваивании переменной с помощью .ToList():

ViewBag.ZXproperties = db.ZXproperties.ToList();

или вы можете использовать следующее выражение:

ViewBag.ZXproperties = from s in db.ZXproperties
                       select s;

Что на самом деле не отличается от высказывания:

ViewBag.ZXproperties = db.ZXproperties;

Преимущество .ToList() состоит в том, что если вы хотите сделать несколько вызовов для этого свойства ViewBag.ZX, он потребует только начальный вызов базы данных, когда он назначает переменную. В качестве альтернативы, если вы выполняете какую-либо форму запрашиваемого действия с данными, например, .Where(), у вас будет выполнен другой запрос, что не идеально, если у вас уже есть данные для работы.

1 голос
/ 06 ноября 2011

Чтобы выбрать все, просто пропустите .All(...), поскольку ZXproperties уже является коллекцией.

ZXContainer db = new ZXContainer();
ViewBag.ZXproperties = db.ZXproperties;

Возможно, вы захотите (или иногда даже захотите) вызвать .ToList() для этой коллекции перед использованием ...

0 голосов
/ 06 ноября 2011

Метод Все используется для определения того, соответствуют ли все элементы коллекции какому-либо условию.

Если вам нужны все элементы, вы можете использовать их напрямую:

ViewBag.ZXproperties = db.ZXproperties;

Если вы хотите, чтобы это оценивалось немедленно, вы можете преобразовать его в список:

ViewBag.ZXproperties = db.ZXproperties.ToList();

Это заставит его немедленно потянуться через провод.

0 голосов
/ 06 ноября 2011

Вы можете использовать это:

var result = db.ZXproperties.ToList();

Для получения дополнительной информации о linq см. 101 linq sample.

Все это некоторая проверка всех элементов и аргументов в ней, называемая lambda expression.

0 голосов
/ 06 ноября 2011

Вы не используете все.Просто наберите

ViewBag.ZXproperties = db.ZXproperties;

или

ViewBag.ZXproperties = db.ZXproperties.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...