LINQ:如何绑定到连接字符串列表?

时间:2012-02-07 11:38:34

标签: c# asp.net linq data-binding

我在方法中有这个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。

我该如何解决这个问题?

提前致谢。

路易

3 个答案:

答案 0 :(得分:10)

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" />

答案 1 :(得分:1)

首先获取记录(使用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();
 }

}

答案 2 :(得分:0)

问题是您的上下文提供程序是一个数据库,这意味着必须将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();
 }

}