【问题标题】:To create a dictionary of data retrieved from the database创建从数据库中检索的数据字典
【发布时间】:2018-09-28 16:22:32
【问题描述】:

我正在使用 SQL Server 数据库开发实体框架 MVC 应用程序。

我有一个来自表的 dict(string,List of string) 类型的字典结构,类似于:

var dict = { "Apple",["Red","Blue","Green"],
             "Orange",["Orange","Pink","Lavender"]
             "Mango",["Yellow","Brown","Indigo"]
           }

我还有另一个颜色列表 [Red,Blue,Pink]。

var lstColors = ["Red","Blue","Pink"]

如下所示,从第一个列表中创建仅包含第二个列表中的结构的最有效方法是什么。

var finalDict = {
                  "Apple",["Red","Blue"],
                  "Orange",["Pink"]
                 }

【问题讨论】:

  • 这与实体框架有什么关系?似乎两个集合都在内存中
  • 在内存使用或执行时间或可读性方面“最有效”或...?你的标准是什么?
  • 请不要使用未编译的伪代码。我不知道 " 颜色列表 [Red,Blue,Pink]" 是什么。

标签: c# linq dictionary


【解决方案1】:

很难理解你的伪代码,但你想要这个:

List<string> colorList = new List<string>{"Red","Blue","Pink"};
Dictionary<string, List<string>> finalDict = dict
    .Select(kv => new
    { 
       Fruit = kv.Key,
       MatchingColors = kv.Value.Intersect(colorList).ToList()
    })
    .Where(x => x.MatchingColors.Any())
    .ToDictionary(x => x.Fruit, x => x.MatchingColors);

所有集合都在内存中,所以这是 LINQ-To-Objects,与实体框架无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2013-06-06
    • 1970-01-01
    • 2019-10-05
    • 2023-03-19
    • 2014-05-26
    相关资源
    最近更新 更多