Как мне не вернуть {ModuleName = Admin} из запроса linq? - PullRequest
2 голосов
/ 30 июля 2010

Я пытаюсь получить строковое значение «Admin» из запроса linq, но когда я делаю:

string oldModule = dc.Modules
                             .Where(x => x.Id == um.ModuleId)
                             .Select(s => new {s.ModuleName})
                             .FirstOrDefault().ToString();

Возвращает {ModuleName = Admin} в переменной oldModule вместо просто Admin.

Ответы [ 5 ]

9 голосов
/ 30 июля 2010

Это потому, что вы ввели анонимный тип в проекцию. Попробуйте это:

string oldModule = dc.Modules
                     .Where(x => x.Id == um.ModuleId)
                     .Select(s => s.ModuleName)
                     .FirstOrDefault();

Я также удалил вызов ToString, который выкинул бы NullReferenceException, если бы предложение Where ничего не соответствовало.

2 голосов
/ 30 июля 2010

А как насчет выбора ModuleName свойства?

(from m in dc.Modules
 where m.Id == um.ModuleId
 select m.ModuleName).FirstOrDefault()
2 голосов
/ 30 июля 2010
       string oldModule = dc.Modules
                         .Where(x => x.Id == um.ModuleId)
                         .Select(s => s.ModuleName)
                         .FirstOrDefault().ToString();
1 голос
/ 30 июля 2010

Это происходит потому, что new {...} создает новый анонимный тип в Select.Когда вы вызываете ToString (), вы вызываете его для этого анонимного типа, а не для строки ModuleName.Если вы просто напишите .Select (s => s.ModuleName), вы получите строку вместо анонимного типа, а oldModule будет содержать Admin.

На самом деле вам даже не нужно ToString () вконец запроса, в результате FirstOrDefault () уже является строкой.

0 голосов
/ 30 июля 2010

Что нового делает в

.Select(s => new {s.ModuleName})

Я не знаю, в чём ваша проблема, но я не удивлюсь, если это будет частью ..

Возможно, я бы просто сделал .Single (s => s.ModuleName) вместо .select и .firstordefault.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...