如何将linq查询转换为数据表

时间:2013-08-13 20:46:34

标签: c# linq telerik

我知道有很多关于这个主题的帖子,但它们似乎都不适合我。

我正在尝试将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不是一个选项。

有人可以帮忙吗? 感谢

1 个答案:

答案 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上设置了一个部分类,它将使用导航属性来获取用户并返回你想要的值。