2009-06-02 48 views
0

我需要使用来自Json对象的数据过滤泛型列表。我使用{name:'', value:''}列表中的反序列化对象。我需要搜索一个数据合同(也是一个列表),其名称为要搜索的字段,并将值作为字段的值。我如何完成这些,因为它们是通用的。 这里是方法:如何使用Json搜索List <>泛型反序列化对象

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

为什么不使用类似

List<SerializedForm >.FindAll(delegate(SerializedForm filter) 
{ 
    return filter.name.IndexOf(filter.value) != -1; 
}); 
+0

哎呀,应该反序列化Object.FindAll – Peter 2009-06-02 21:06:12

+0

看起来不错,但我怎么把它绑定到我的其他列表。或者,如何使用这些值过滤我的数据合同列表? – Zacho 2009-06-02 21:50:17

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; 
    } 

这个伟大的工程,但我会印象非常深刻,如果我能全球化这个所以我所有的其他数据合约可以使用它!

相关问题