Я только что задал этот вопрос . Что привело меня к новому вопросу:)
До этого момента я использовал следующую схему выбора вещи с Linq to SQL, чтобы иметь возможность обрабатывать 0 «строк», возвращаемых запросом:
var person = (from p in [DataContextObject].Persons
where p.PersonsID == 1
select new p).FirstOrDefault();
if (person == null)
{
// handle 0 "rows" returned.
}
Но я не могу использовать FirstOrDefault()
, когда я делаю:
var person = from p in [DataContextObject].Persons
where p.PersonsID == 1
select new { p.PersonsID, p.PersonsAdress, p.PersonsZipcode };
// Under the hood, this pattern generates a query which selects specific
// columns which will be faster than selecting all columns as the above
// snippet of code does. This results in a performance-boost on large tables.
Как проверить 0 «строк», возвращаемых запросом, используя второй шаблон?
UPDATE:
Я думаю, что моя сборка не удалась, потому что я пытаюсь присвоить результат запроса переменной (this._user
), объявленной с типом [DataContext].User
.
this._user = (from u in [DataContextObject].Users
where u.UsersID == [Int32]
select new { u.UsersID }).FirstOrDefault();
Ошибка компиляции: невозможно неявное преобразование типа "AnonymousType # 1" в "[DataContext] .User".
Есть мысли о том, как я могу обойти это? Должен ли я сделать свой собственный объект?