传递一个值列表并为其关联结果重新调用字典

本文关键字:关联 结果 新调用 字典 调用 一个 列表 | 更新日期: 2023-09-27 18:15:32

在我的表中,我有一些列,其中两列是我感兴趣的:DescriptionKey列所以一些样本行看起来是这样的:

Key    Description 
12RRR  "Description 1"
45RTG  "Description 2"
45ERT  "Description 3"

我想写一个方法,获取Descriptions的列表,并向我返回另一个列表或字典或任何其他适当的结构,即该DescriptionKey值。我可以写一个更简单的查询来逐个搜索。传递一个描述,获取其密钥等。。。但我的列表大约是120000项,这样我将运行脚本120000次!这就是为什么我想将它们全部传递并在一个查询中获得它们。

这就是我所走的路,但我认为这是不对的。

private List<string> Lookup(List<string> des)
{
    var query = (from r in repo.Context.MyTable
        where des.Contains(r.Description)
        select r.Key);
    return query.ToList();
}

传递一个值列表并为其关联结果重新调用字典

我不确定你想要什么结构,但如果你想查找Key to Dictionary,你可以在结果上使用LINQ的ToDictionary创建这样一个字典。

private IDictionary<string, string> Lookup(List<string> des)
{
    var query = (from r in repo.Context.MyTable
        where des.Contains(r.Description)
        select r);
    return query.ToDictionary(r => r.Key, r => r.Description);
}

您可以执行联接语句:

return (from r in repo.Content.MyTable
         join d in des on r.Description equals d
         select r.Key).ToList();

如果你想要一本字典:

return (from r in repo.Content.MyTable
         join d in des on r.Description equals d
         select r.Key, r.Description).ToDictionary(p=>p.Key, p=>p.Description);
private List<string> Lookup(List<string> des)
{
    var query = (from r in repo.Context.MyTable
        where des.Contains(r.Description)
        select r.Key);
    return query.ToList();
}

这是一个查询解决方案,此查询将在以下行实现:

return query.ToList();

筛选将由sql进行。