[英]Remove a dictionary if all the keys has empty values in it?
我有一个List<Dictionary<string, object>>
。 如果所有键中都有空值,则需要从此列表中删除字典。 这是我的代码和示例。
foreach (int rowval in rowscol)
{
Dictionary<string, object> Data = new Dictionary<string, object>();
foreach (Contracts.CommonDataField field in finalColumns)
{
var valList = record.CommonDataValues.FirstOrDefault(row => row.RowID == rowval && row.FieldName == field.FieldName);
if (valList != null)
{
string value = valList.RecordFieldData;
Data.Add(field.FieldName, value);
}
}
finaldata.Add(Data);
}
我需要删除这个
带有数据的示例字典,
如果以后要删除它,为什么将它添加到列表中?
但是,由于键是一个字符串,而值也是一个字符串,因此应该可以:
finaldata = finaldata
.Where(d => d.Values.Cast<string>().Any(str => !String.IsNullOrEmpty(str)))
.ToList();
要么
finaldata.RemoveAll(d => d.Values.Cast<string>().All(String.IsNullOrEmpty));
如果始终是字符串,则首先使用List<Dictionary<string, string>>
。 如果值的类型可以不同,则可以使用:
finaldata.RemoveAll(d => d.Values.All(obj => obj == null || obj.ToString() == ""));
一种解决方案:
foreach (int rowval in rowscol)
{
bool hasNonNullValue = false;
Dictionary<string, object> Data = new Dictionary<string, object>();
foreach (Contracts.CommonDataField field in finalColumns)
{
var valList = record.CommonDataValues.FirstOrDefault(row => row.RowID == rowval && row.FieldName == field.FieldName);
if (valList != null)
{
string value = valList.RecordFieldData;
Data.Add(field.FieldName, value);
if (value != null) {
hasNonNullValue = true;
}
}
}
if (hasNonNullValue) {
finaldata.Add(Data);
}
}
foreach (int rowval in rowscol)
{
Dictionary<string, object> Data = new Dictionary<string, object>();
bool empty = true;
foreach (Contracts.CommonDataField field in finalColumns)
{
var valList = record.CommonDataValues.FirstOrDefault(row => row.RowID == rowval && row.FieldName == field.FieldName);
if (valList != null)
{
string value = valList.RecordFieldData;
Data.Add(field.FieldName, value);
if(!String.IsNullOrEmpty(value)) empty = false;
}
}
if (!empty) finaldata.Add(Data);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.