在 C# 中使用对象的嵌套 SerializedDictonary 过滤对象 ListCollectionView
Filter object ListCollectionView using object's nested SerializedDictonary in C#
我想使用嵌套在对象中的 SerializableDictionary 过滤 ListCollectionView。
过滤器将检查指定(硬编码)键的值。
对象(只有伪代码,避免代码过多):
MasterRecord{
MasterName string,
AdditionalAttributes SerializableDictionary
}
下面是我当前使用 MasterName(string) 的简单过滤器:
public string Filter
{
get
{
return m_Filter;
}
set
{
if (value != m_Filter)
{
m_Filter = value;
ListCollectionView masterRecords = (ListCollectionView)CollectionViewSource.GetDefaultView(MasterRecordCollection);
if (!string.IsNullOrEmpty(m_Filter))
{
masterRecords.Filter = (item) => { return (item as MasterRecord).MasterName.StartsWith(m_Filter) ? true : false; };
}
else
masterRecords.Filter = null;
masterRecords.Refresh();
}
}
}
样本:
如何修改我当前的方法并按值过滤(使用 .Filter() 和 .StartWith(),例如 'COCA-COLA')AdditionalAttributes(SerializableDictionary) when(这部分应该是硬编码的)Key == 'c_ProductName' ?
解决方案(感谢@jdweng):
masterRecords.Filter = (item) => { return (item as MasterRecord).AdditionalAttributes.Any(y => (y.Key == "c_ProductName") && (y.Value.StartsWith(m_Filter)));};
我想使用嵌套在对象中的 SerializableDictionary 过滤 ListCollectionView。 过滤器将检查指定(硬编码)键的值。
对象(只有伪代码,避免代码过多):
MasterRecord{
MasterName string,
AdditionalAttributes SerializableDictionary
}
下面是我当前使用 MasterName(string) 的简单过滤器:
public string Filter
{
get
{
return m_Filter;
}
set
{
if (value != m_Filter)
{
m_Filter = value;
ListCollectionView masterRecords = (ListCollectionView)CollectionViewSource.GetDefaultView(MasterRecordCollection);
if (!string.IsNullOrEmpty(m_Filter))
{
masterRecords.Filter = (item) => { return (item as MasterRecord).MasterName.StartsWith(m_Filter) ? true : false; };
}
else
masterRecords.Filter = null;
masterRecords.Refresh();
}
}
}
样本:
如何修改我当前的方法并按值过滤(使用 .Filter() 和 .StartWith(),例如 'COCA-COLA')AdditionalAttributes(SerializableDictionary) when(这部分应该是硬编码的)Key == 'c_ProductName' ?
解决方案(感谢@jdweng):
masterRecords.Filter = (item) => { return (item as MasterRecord).AdditionalAttributes.Any(y => (y.Key == "c_ProductName") && (y.Value.StartsWith(m_Filter)));};