传递值列表并为其关联结果重新创建字典

时间:2014-07-29 15:39:56

标签: c# linq

在我的表格中,我有一些专栏,其中两篇符合我的兴趣: DescriptionKey列 所以一些示例行将如下所示:

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

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

这是我有多远,但我不认为这是正确的。

Description

3 个答案:

答案 0 :(得分:1)

你可以做一个连接声明:

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);

答案 1 :(得分:1)

我不确定您要求的结构是什么,但如果您想查找Key to Dictionary,可以使用LINQ' s 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);
}

答案 2 :(得分:1)

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进行过滤。