c# - 使用 linq 选择字典列表

标签 c# asp.net linq

我对 C# 字典有疑问。我想检索列表以使用

ErrDict.Where(x => x.Key == kurumVKN).Select(x => x.Value) as List<ErrorModel>;

但它返回 null。我怎样才能得到字典的列表?

Dictionary<string,List<ErrorModel> ErrDict = new Dictionary<string,List<ErrorModel>();
 if (ErrDict == null)
     {
       ErrDict = new Dictionary<string, List<ErrorModel>>(); 
     }

List<ErrorModel> listErrModel = ErrDict.Where(x => x.Key == kurumVKN).Select(x => x.Value) as List<ErrorModel>;
 if (listErrModel == null)
     {
        listErrModel=new List<ErrorModel>();
     }
        listErrModel.Add(errModel);
        ErrDict.Remove(kurumVKN);
        ErrDict.Add(kurumVKN, listErrModel);

最佳答案

您需要调用ToListSelect 之后和 SelectMany展平返回 List<ErrorModel> 列表的查询.试试这个:

var list = ErrDict.Where(x => x.Key == kurumVKN)
           .Select(x => x.Value)
           .SelectMany(x => x) // we add this to get only a single List<ErrorModel>
           .ToList();

关于c# - 使用 linq 选择字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24606886/

相关文章:

c# - C# .NET 中通过 HTTP 发布的 SOAP 对象

c# - 在 ASP.NET Web API 中返回动态键值集合

c# - 如何以编程方式向 contentPlaceHolder 添加内容?

c# - 合并列表中的重复项

c# - Enumerable.Last<T>() 和 C# 数组

c# - 在 ASP.NET Core 中通过 DI 从初始化对象初始化对象

c# - 使用 Linq 比较两个通用列表

c# - 用于对数据进行分组的自动映射器配置

禁用 Javascript 的 ASP.NET

c#检查列表中的所有字符串是否相同