LINQ read Выберите значения - PullRequest
       2

LINQ read Выберите значения

3 голосов
/ 13 декабря 2011

У меня есть запрос LINQ, где я хочу выбрать и прочитать значение p.Api.

 var api = DataAccessNew.Instance.dcServers.Where(p => p.Ip == IpAddress).Select(p => p.Api);

Как мне прочитать значение p.Api?

Я пробовал api.ToString(), но вместо фактического значения столбца я получаю SQL.

Ответы [ 4 ]

4 голосов
/ 13 декабря 2011

Вы получаете обратно IEnumerable<> (и ваш звонок ToString показывает вам значение этого выражения).

Если вы ожидаете одно значение, сделайте следующее:

var api = DataAccessNew.Instance.dcServers
    .Where(p => p.Ip == IpAddress)
    .Select(p => p.Api)
    .Single();

Возможно, вам будет интересно прочитать о других методах, таких как Single (): SingleOrDefault, First, FirstOrDefault. Какой из них вы использовали, зависит от того, ожидаете ли вы одно или несколько возвращаемых значений (Single против First) и что вы хотите получить, если значений нет (методы * Default возвращают тип по умолчанию, а не генерируют исключение).

Или, если вы хотите просмотреть все возвращаемые значения:

var api = DataAccessNew.Instance.dcServers
    .Where(p => p.Ip == IpAddress)
    .Select(p => p.Api);

foreach (var apiValue in api)
{
    // apiValue  will have the value you're looking for.
}
2 голосов
/ 13 декабря 2011

Попробуйте этот фрагмент кода:

string apiValue = api.FirstOrDefault().ToString();
2 голосов
/ 13 декабря 2011

Ваш синтаксис выглядит нормально ..

Кстати попробуйте это

string api =DataAccessNew.Instance.dcServers.Where(p => p.Ip == IpAddress).Select(p => p.Api).FirstOrDefault();
1 голос
/ 13 декабря 2011

, если p.Ip - уникальный ключ в вашей таблице, вы можете попытаться добавить .FirstOrDefault() после запроса Linq.

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