如何使用LINQ按条件筛选List<Dictionary<string,object>>类型数据
你可以直接通过字典键取值后做类型转换再判断条件即可,完整代码如下:
var filteredResult = lstUTI.Where(item => // 可选:先判断键是否存在,避免键不存在抛出异常 item.ContainsKey("UTI_SURNAME") && item.ContainsKey("PROFIL_ICODE") // 判断姓氏以A开头 && (item["UTI_SURNAME"] as string)?.StartsWith("A") == true // 判断配置文件编码等于2 && Convert.ToInt32(item["PROFIL_ICODE"]) == 2 ).ToList();
上面的写法做了空值安全处理,就算UTI_SURNAME对应的值为null也不会触发空引用异常。如果你可以确认字典里一定存在对应键、且值类型和预期一致,也可以简化写法:
var filteredResult = lstUTI.Where(item => ((string)item["UTI_SURNAME"]).StartsWith("A") && (int)item["PROFIL_ICODE"] == 2 ).ToList();
内容的提问来源于stack exchange,提问作者Fabrice76
相关产品推荐
相关产品推荐

