选择带有linq的Dictionary's List

本文关键字:List Dictionary linq 选择 | 更新日期: 2023-09-27 18:11:48

我有一个c#字典的问题。我想检索List以使用

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

选择带有linq的Dictionary's List

您需要在SelectSelectMany之后调用ToList以平整化返回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();

试试这个

List<ErrorModel> listErrModel = ErrDict.Where(x => x.Key == kurumVKN)
                                       .SelectMany(x => x.Value)
                                       .ToList<ErrorModel>();

你可以试试这个:

var result = ErrDict.Where(x => x.Key == kurumVKN).Select(x => x.Value).ToList();

为了避免Adam在他的评论中指出的是正确的,你必须把上面的改为下面的:

 var result = ErrDict.Where(x => x.Key == kurumVKN).SelectMany(x => x.Value).ToList();

首先,你应该试试

ErrDict.Where(x => x.Key == kurumVKN).SelectMany(x => x.Value).ToList<ErrorModel>();