【问题标题】:LINQ Query over another LINQ queryLINQ 查询优于另一个 LINQ 查询
【发布时间】:2012-02-23 21:08:52
【问题描述】:

有没有办法通过另一个 LINQ 查询进行查询?

我有一个包含 LINQ 表达式结果的 BindingSource 对象。并且那个BindingSource 是DataGridView 的DataSource。

现在我想进一步过滤 BindingSource 的结果。

有没有办法将该 BindingSource 数据源转换为我可以查询的内容?

【问题讨论】:

    标签: c# linq linq-to-sql


    【解决方案1】:

    当然。您可能只需要将 DataSource 转换为 IEnumerable 或 IQueryable,如下所示:

    var queryable = (IEnumerable<MyObject>)myBindingSource.DataSource;
    var myResults = queryable.Where(mObj => myObj.Color == "Red");
    

    【讨论】:

    • 有趣!!如果我不知道包含 DataSource 的对象的实际类型怎么办?
    • 那么你在查询它的方式上真的无能为力。您希望在完全未知的类型上执行什么类型的查询(并不是说不可能,只是相当有限)。
    • 实际上它可能有很多东西,这是自定义 DataGridView 的一部分,在应用程序中无处不在,所以我想构建一些通用的东西。
    • @Hugo:如果您关心的对象实现了一个通用接口,那么您实际上并不需要知道对象的类型。因此,如果您的对象实现了定义为interface INameable { string Name; int Id;} 的接口,那么您可以将 DataSource 转换为 IEnumerable 并且您可以查询这些列。除此之外,您还坚持使用反射和动态类型等令人讨厌的东西,这不是我们想要去的地方......
    • @DaveMarkle:感谢您的意见,我会考虑的。我习惯使用 DataTable,女巫使用起来更友好。通过构建通用方法并完成所有程序。我想我需要改变我的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多