我知道有很多关于这个主题的帖子,但它们似乎都不适合我。
我正在尝试将linq查询转换为我的telerik gridview可接受的对象。
我有什么:
var allProjectItems = from x in db.DateItems.AsEnumerable()
where
x.Date.ProjectId == projectId
select new
{
ItemDate = (DateTime?)x.Date.ItemDate,
LastName =
((from Users in db.Users
where
Users.UserId == x.Date.AddedByUserId
select new
{
Users.Lastname
}).FirstOrDefault().Lastname),
DateItemId = x.DateItemId,
DateItem1 = x.DateItem1,
DateValue = x.DateValue,
DateId = x.DateId,
DateType = x.DateType
};
我尝试在查询中的每个表上添加.AsEnumerable(),但我仍然无法使用gridview的查询或使用CopyToDataTable方法转换为数据表。 我还尝试指定x.Field(“ProjectId”)等请求的属性,但Field不是一个选项。
有人可以帮忙吗? 感谢
答案 0 :(得分:1)
当您真正想知道在gridview中选择了哪个对象时,选择关闭匿名类型会让您感到沮丧。
只需选择您的DataItem并将其绑定到gridview,然后在gridview上设置Binding,以显示要在gridview中显示的属性的列。
//Obviously this is simplified and doesn't include your users stuff, but I think you get the idea.
var allProjectItems = (from x in db.DateItems
where
x.Date.ProjectId == projectId
select x).ToList();
您必须在gridview上设置绑定以显示所需的数据。至于用户业务,我在DataItem上设置了一个部分类,它将使用导航属性来获取用户并返回你想要的值。