我需要使用来自Json对象的数据过滤通用List。我在{name:'', value:''}
的列表中有反序列化的对象。我需要搜索一个数据契约(也是一个列表),其名称为要搜索的字段,值为字段的值。我如何完成这些,因为它们是通用的。
这是方法:
public List<StaffingPositionsDataContract> GetStaffingPosition(string searchFilters)
{
List<serializedForm> deserializedObject = JsonConvert.DeserializeObject<List<serializedForm>>(searchFilters);
List<StaffingPositionsDataContract> staffingPositionResponse = new StaffingPositionsDataContract().LoadMockData();
deserializedObject.ForEach(delegate(serializedForm filter) {
});
return staffingPositionResponse;
}
我想尝试一些简单的事情:
var query = staffingPositionResponse .Where(filter.name + ".Contains(@0)", filter.value);
但除了2个参数外,其他地方没有。提前谢谢!
答案 0 :(得分:0)
为什么不使用
之类的东西List<SerializedForm >.FindAll( delegate(SerializedForm filter)
{
return filter.name.IndexOf(filter.value) != -1;
});
答案 1 :(得分:0)
感谢百万彼得!以下是我最终满足我的需求:
private bool DoesContractMeetFilter(List<SerializedForm> filters, StaffingPositionsDataContract position)
{
return filters.FindAll(delegate(SerializedForm filter)
{
return string.Equals(position.PositionId.ToString(), filter.value) &&
string.Equals(position.Series, filter.value) &&
string.Equals(position.OrgLocation,filter.value) &&
string.Equals(position.DutyStation, filter.value) &&
string.Equals(position.BudgetStatus, filter.value)&&
string.Equals(position.BudgetingEntity, filter.value) &&
string.Equals(position.BFY, filter.value);
}).Where(x => x.value != "" || x.value != null || x.value.ToUpper() != "ALL").Count() > 0;
}
这很好用,但是如果我可以全局化这样做,那么我会非常感动,所以我的所有其他数据合同都可以使用它!