【问题标题】:Dynamic query with linq to IDictionary<string, object>?使用 linq 对 IDictionary<string, object> 进行动态查询?
【发布时间】:2010-11-24 07:32:30
【问题描述】:

这个问题与this question 类似,但不完全相同。

我能否对 linq-to-sql 数据上下文进行动态查询,并将结果作为 IDictionary 返回,其中键是列的名称?

有点像(不编译,但说明意图)

IDictionary<string, object> data = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
data = db.ExecuteQuery<IDictionary<string, object>(queryString, params).ToDictionary(
    k=>nameOfColumn,
    k=>k
)

显然我在数据中完全不在地图上 = db.ExecuteQuery...
我觉得 executeQuery 不是我应该使用的,因为它已经尝试映射到一个对象。对于这个特殊的用例,我不希望这样。

【问题讨论】:

    标签: c# .net linq-to-sql


    【解决方案1】:

    您需要包含一个对象类型才能实现;怎么样:

    var data = db.ExecuteQuery<SomeType>(queryString, params)
              .ToDictionary(st => st.SomeKey);
    

    【讨论】:

    • 这不会让 Linq 尝试将值解析为 SomeType 吗?
    • 是的......但有什么替代方案 - object?如果您没有输入数据,那么 LINQ 可能不是最佳选择;只需使用 ADO.NET 和 SqlCommand.ExecuteReader
    • 确实,我同时已经这样做了。也许我应该研究是否可以让我输入的数据以某种方式插入到 Linq 的解析中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多