使用LINQ查询结果为GridControl的数据源c#

时间:2012-08-10 12:02:38

标签: c# linq datagrid

我在静态类

中有这样的函数
public static IEnumerable<MyObject> getFilteredList(int docType)
{
    var fItems = from i in list
                 where i.DocType == docType
                 select i;

    return fItems;
}

当我以这样的形式将数据源的返回列表用于我的网格时,例如:

GridControl.DataSource = staticClass.getFilteredList(10)

网格DataSource属性为null。你能解释一下为什么会这样吗?

编辑:列表变量是List,其中包含DocType = 10的元素。 Items包含元素。

4 个答案:

答案 0 :(得分:2)

你应该使用

GridControl.DataSource = staticClass.getFilteredList(10).ToList();

创建一个新的List实例以绑定到您的网格。

另一种方法是使用BindingList,它完全支持数据绑定,并为您提供有用的事件,如ListChangedAddingNew

var list = new BindingList(staticClass.getFilteredList(10).ToList());

GridControl.DataSource = list;

答案 1 :(得分:1)

尝试

GridControl.DataSource = staticClass.getFilteredList(10).ToList();

因为DataSource必须从IList继承

答案 2 :(得分:1)

您可以尝试使用ToList()

GridControl.DataSource = staticClass.getFilteredList(10).ToList();
GridControl.DataBind();

答案 3 :(得分:0)

public static IEnumerable<MyObject> getFilteredList(int docType)
    {
        var fItems = from i in list
                     where i.DocType.docTypeId == docType
                     select i;

        return fItems;
    }

如果我错了,请纠正我,但现在好像你正在将int与DocType类进行比较。如果不是这样,那么你的查询可能只是返回一个空集,因为它找不到匹配的东西。