可枚举和列表
本文关键字:列表 枚举 | 更新日期: 2023-09-27 18:18:08
此函数返回一个字典,其中包含来自IEnumerable对象的所有键名值。我想过滤掉我传入的列表中不存在的任何项目。我只想要作为cols存在的属性。名称
public static Dictionary<string, string> GetDataRowFromObject(IEnumerable<NameValue<string, object>> properties, List<ColDefModel> cols)
{
var dataRow = new Dictionary<string, string>();
foreach (NameValue<string, object> property in properties)
{
try
{
if (property.Value == null)
dataRow[property.Name] = "";
else
dataRow[property.Name] = property.Value.ToString();
}
catch (NullReferenceException e)
{
dataRow[property.Name] = "";
}
}
return dataRow;
}
var dictionary = properties.Where(nv => nv.Value != null)
.Where(nv => cols.Any(c => c.ColName == nv.Name))
.ToDictionary(nv => nv.Name, nv => nv.Value.ToString());
如果我理解正确的话,试着通过:
properties.Where(x => cols.Any(y => x.Name == y.Name))
而不是通过properties
。如果性能是一个问题,尝试在cols
(如HashSet
)中创建某种名称的散列列表;假设它叫colNames
,然后把上面的改成x => colNames.ContainsKey(x.Name)
。