我已经在互联网上搜索了这个答案,并询问了几位开发人员,但都没有找到答案。我有一个名为 StaffingPositionsDataContract 的类,我正在将模拟数据(现在)加载到 List<> 中并返回到页面。这很好用,但现在我需要根据屏幕上输入的另一个值列表过滤列表,作为 JSON 发送到该服务,然后反序列化为同一类的列表。请注意,用户可以过滤这些类成员中的任何一个,因此所有可能为空,或者一个可能为空,等等。这是服务方法:
public List<StaffingPositionsDataContract> GetStaffingPosition(string searchFilters)
{
var filters = JsonConvert.DeserializeObject<List<StaffingPositionsDataContract>>(searchFilters);
IList<StaffingPositionsDataContract> contracts = new StaffingPositionsDataContract().LoadMockData();
if (searchFilters.Length > 4)
{
//Filter contracts here!
}
return contracts;
}
这是要加载的 Mock 数据的 Data Contract 类:
[DataContract] [Serializable]
public class StaffingPositionsDataContract
{
[DataMember(Order = 1)] public int PositionId { get; set; }
[DataMember(Order = 2)] public string Series { get; set; }
[DataMember(Order = 3)] public string BFY { get; set; }
[DataMember(Order = 4)] public string BudgetStatus { get; set; }
[DataMember(Order = 5)] public string DutyStation { get; set; }
[DataMember(Order = 6)] public string OrgLocation { get; set; }
[DataMember(Order = 7)] public string BudgetingEntity { get; set; }
[DataMember(Order = 8)] public string SeriesTitle { get; set; }
[DataMember(Order = 9)] public int PersonnelId { get; set; }
[DataMember(Order = 10)] public string PositionStatus { get; set; }
[DataMember] public int RecId { get; set; }
public List<StaffingPositionsDataContract> LoadMockData()
{
List<StaffingPositionsDataContract> staffingposition = new List<StaffingPositionsDataContract>()
{
new StaffingPositionsDataContract() {RecId=1, PositionId = 12345, Series="", BFY="FY2010", BudgetStatus="Actual", DutyStation="", OrgLocation="", BudgetingEntity=""},
new StaffingPositionsDataContract() {RecId=2, PositionId = 67891, Series="", BFY="FY2011", BudgetStatus="Actual", DutyStation="", OrgLocation="", BudgetingEntity=""},
new StaffingPositionsDataContract() {RecId=3,PositionId = 12345, Series="", BFY="FY2010", BudgetStatus="Projected", DutyStation="", OrgLocation="", BudgetingEntity=""},
new StaffingPositionsDataContract() {RecId=4,PositionId = 67892, Series="", BFY="FY2011", BudgetStatus="Projected", DutyStation="", OrgLocation="", BudgetingEntity=""},
new StaffingPositionsDataContract() {RecId=5,PositionId = 987654, Series="", BFY="FY2010", BudgetStatus="Projected", DutyStation="", OrgLocation="", BudgetingEntity=""}
};
return staffingposition;
}
}
请注意,过滤器将始终是一个包含一个、部分或所有值的列表。如果可以的话,请拯救我的理智和帮助!谢谢!
我应该早先指出,我真的希望这是一个通用函数,可以被任何这些类似的数据类(有很多)使用。