LINQ:如何绑定到串联字符串列表

本文关键字:字符串 列表 绑定 何绑定 LINQ | 更新日期: 2023-09-27 18:22:46

我在一个方法中有这个LINQ查询:

public List<String> GetListNameUsers() 
{
    using (var context = new UCDataContext()) 
    {
        return (from c in context.Users
                select (c.LastName + " " + c.FirstName) ).ToList();
    }
}

但这并不奏效。我想返回一个由FirstName+"+LastName组成的字符串。

我将此方法的结果绑定到DropDownList,如下所示:

<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="UsersODS"
     DataTextField="LastName" DataValueField="IDUser" />

在对我的DropDownList进行数据绑定时,无法识别字段LastName。

我该如何解决这个问题?

提前谢谢。

Luigi

LINQ:如何绑定到串联字符串列表

public IList GetListNameUsers() 
{
    using (var context = new UCDataContext()) 
    {
        return (from c in context.Users
                select new { 
                     Name = c.LastName + " " + c.FirstName,
                     IDUser = c.IDUser
                   }
               ).ToList();
    }
}
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="UsersODS"
     DataTextField="Name" DataValueField="IDUser" />

首先获取记录(使用ToList),然后在客户端中进行字符串连接

public List<String> GetListNameUsers()
{
 using (var context = new UCDataContext())
 {
     return context.Users
                   .Select(c=>new {c.LastName, c.FirstName})
                   .ToList()
                   .Select(c=>c.LastName + " " + c.FirstName)
                   .ToList();
 }
}

问题是您的上下文提供程序是一个数据库,这意味着必须将LINQ表达式转换为SQL查询。SQL查询生成器可能不支持将字符串串联转换为正确的SQL。相反,您可以将用户转换为一个简单的旧列表,然后在该列表上执行选择。

类似于:

public List<String> GetListNameUsers()
{
 using (var context = new UCDataContext())
 {
     var users = (from c in context.Users.ToList()
             select (c.LastName + " " + c.FirstName) ).ToList();
 }
}