首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq2DB与动态查询

Linq2DB与动态查询
EN

Stack Overflow用户
提问于 2019-02-05 08:23:00
回答 1查看 1.7K关注 0票数 0

我试图在没有创建映射它的模型的情况下执行查询。考虑一下这个片段

代码语言:javascript
复制
public IDictionary<string, int> GetParentelaMapping()
    {
        using (var conn = dataContextFactory.Create())
        {
            var result = conn.Query<dynamic>("SELECT ID_GRADO_PARENTELA,GRADO_PARENTELA FROM GRADO_PARENTELA")
                .ToDictionary(
                    row => (string)row.GRADO_PARENTELA,
                    row => (int)row.ID_GRADO_PARENTELA, StringComparer.OrdinalIgnoreCase);

            return result;
        }
    }

它给了我一个例外,Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:''int‘不包含’GRADO_PARENTELA‘的定义。

我该如何处理这种情况呢?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-05 13:58:05

不幸的是,目前不支持此功能。跟踪新的第1591期

作为一种解决办法,我建议为读取这样的结果定义额外的类:

代码语言:javascript
复制
class ParentelaMapping
{
    public int ID_GRADO_PARENTELA { get; set; }
    pulbic string GRADO_PARENTELA { get; set; }
}

public IDictionary<string, int> GetParentelaMapping()
{
    using (var conn = dataContextFactory.Create())
    {
        var result = conn.Query<ParentelaMapping>("SELECT ID_GRADO_PARENTELA,GRADO_PARENTELA FROM GRADO_PARENTELA")
            .ToDictionary(
                row => row.GRADO_PARENTELA,
                row => row.ID_GRADO_PARENTELA, StringComparer.OrdinalIgnoreCase);

        return result;
    }
}

附注:

linq2db旨在更好地处理linq查询,因此考虑以以下方式重写查询:

代码语言:javascript
复制
[Table("GRADO_PARENTELA")]
class GrandoParentela
{
    public int ID_GRADO_PARENTELA { get; set; }
    pulbic string GRADO_PARENTELA { get; set; }
}

public IDictionary<string, int> GetParentelaMapping()
{
    using (var conn = dataContextFactory.Create())
    {
        var result = conn.GetTable<GrandoParentela>()
            .ToDictionary(
                row => row.GRADO_PARENTELA,
                row => row.ID_GRADO_PARENTELA, StringComparer.OrdinalIgnoreCase);

        return result;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54530251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档