【发布时间】:2014-02-17 13:13:03
【问题描述】:
我发现很难将 linq 查询结果绑定到我的 asp.net 页面上的 gridview 控件。在主 Linq 查询中,我从一个表中获取所有用户,该表符合检查“表单已完成”的列的标准 -
using (COLA_AccreditationEntities4 eFactory = new COLA_AccreditationEntities4())
{
var evaluations = eFactory.Symposium_Evaluation.Where(a =>
(!a.Completed.HasValue ||
a.Completed.Value == 0) && a.Active && a.UserID >= 2063).ToList();
然后在代码中,我正在执行一个 foreach 循环以从另一个表中获取与前一个表中的用户 ID 匹配的所有用户 ID -
foreach (var eval in evaluations)
{
var user = eFactory.SYMPOSIUM_Users.Where(a => a.UserID == eval.UserID.Value
&& a.Active.Value && a.UserRole == 1).FirstOrDefault();
if (user != null && !users.Contains(user.UserID))
{
string name = user.FirstName + " " + user.LastName;
string email = user.Email;
}
}
我只想在屏幕上显示 user.firstname + user.lastname + user.email。我使用gridview控件来绑定这个,但没有得到想要的结果。
关于如何实现这一点的任何想法?
【问题讨论】:
-
将 gridview 绑定到查询结果时,我收到“数据源是无效类型。它必须是 IListSource、IEnumerable 或 IDataSource。”错误 - 我在这个论坛中使用 .ToList() 尝试了几个解决方案,但我没有获得 .ToList() 的智能感知。 GridView1.DataSource = user.ToList(); GridView1.DataBind();
-
你能展示你如何绑定 GridView 吗?请显示完整的 Page_Load 事件处理程序。
-
@MalcolmFrexner Frexner 我把上述方法放在了一个不在 Page_Load 方法中的点击事件中。
-
以下查询的返回类型是什么:eFactory.SYMPOSIUM_Users.Where(a => a.UserID == eval.UserID.Value && a.Active.Value && a.UserRole == 1 ) 如果我是对的,它应该是您的类型的 IEnumerable。如果这是真的,您应该能够通过将其分配给网格的 DataSource 来绑定它。