我在方法中有这个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。
我该如何解决这个问题?
提前致谢。
路易
答案 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();
}
}