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
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();
}
}