LINQ 读取 Select 值

3

我有一个LINQ查询,想要选择并读取p.Api的值。

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

如何读取 p.Api 的值?

我尝试了 api.ToString(),但是我得到的是 SQL 而不是实际列的值。

5个回答

4
您将获得一个 IEnumerable<> (并且您的 ToString 调用将显示该表达式的值)。
如果您期望获得单个值,请执行以下操作:
var api = DataAccessNew.Instance.dcServers
    .Where(p => p.Ip == IpAddress)
    .Select(p => p.Api)
    .Single();

你可能对其他像Single()这样的方法感兴趣: SingleOrDefault, First, FirstOrDefault。你使用哪个取决于你是否期望返回单个或多个值(Single vs. 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.
}

3

尝试这段代码:

string apiValue = api.FirstOrDefault().ToString();

2

您的语法似乎没问题...

顺便试试这个

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

1
如果您的表中

p.Ip 是唯一键,您可以尝试在Linq查询之后添加.FirstOrDefault()


0
public string getselectedvalue(ListBox l)
{ 
    string vtext="",vval="";
    var selectedQueryText = l.Items.Cast<ListItem>().Where(item => item.Selected);
    var selectedQueryVal = l.Items.Cast<ListItem>().Where(item => item.Selected).Select(item => item.Value);

    vtext= String.Join("','", selectedQueryText ).TrimEnd();
    vval= String.Join("','", selectedQueryVal ).TrimEnd();
    return v;
}

2
虽然这段代码片段可能解决了问题,但是包括解释真的有助于提高您的帖子质量。请记住,您正在为未来的读者回答问题,而这些人可能不知道您的代码建议的原因。 - Alessio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接