如何搜索List<>与Json Generic反序列化对象

时间:2009-06-02 20:51:02

标签: linq json .net-3.5

我需要使用来自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个参数外,其他地方没有。提前谢谢!

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

这很好用,但是如果我可以全局化这样做,那么我会非常感动,所以我的所有其他数据合同都可以使用它!