判断一个model的三个属性的值是否为空和相同,结果写了6个判断出来,好多重复的,但是又不知道怎么简化
因为都是循环改o.xxx的值,也不好写通用方法,传值进去改 private static List<CZCombineDN> CheckList(List<CZCombineDN> uploadDataList)
{
var SOLDTOCUSTOMERList = uploadDataList.Select(o => o.SOLDTOCUSTOMER.FieldText).Distinct();
if (SOLDTOCUSTOMERList.Count() > 1)
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.SOLDTOCUSTOMER.CheckResult = false;
o.SOLDTOCUSTOMER.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
}
if (SOLDTOCUSTOMERList.Any(x => string.IsNullOrEmpty(x)))
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.SOLDTOCUSTOMER.CheckResult = false;
o.SOLDTOCUSTOMER.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
} var DESTINATIONList = uploadDataList.Select(o => o.DESTINATION.FieldText).Distinct();
if (DESTINATIONList.Count() > 1)
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.DESTINATION.CheckResult = false;
o.DESTINATION.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
}
if (DESTINATIONList.Any(x => string.IsNullOrEmpty(x)))
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.DESTINATION.CheckResult = false;
o.DESTINATION.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
} var ETADATEList = uploadDataList.Select(o => o.ETADATE.FieldText).Distinct();
if (ETADATEList.Count() > 1)
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.ETADATE.CheckResult = false;
o.ETADATE.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
}
if (ETADATEList.Any(x => string.IsNullOrEmpty(x)))
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.ETADATE.CheckResult = false;
o.ETADATE.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
} return uploadDataList;
}
因为都是循环改o.xxx的值,也不好写通用方法,传值进去改 private static List<CZCombineDN> CheckList(List<CZCombineDN> uploadDataList)
{
var SOLDTOCUSTOMERList = uploadDataList.Select(o => o.SOLDTOCUSTOMER.FieldText).Distinct();
if (SOLDTOCUSTOMERList.Count() > 1)
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.SOLDTOCUSTOMER.CheckResult = false;
o.SOLDTOCUSTOMER.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
}
if (SOLDTOCUSTOMERList.Any(x => string.IsNullOrEmpty(x)))
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.SOLDTOCUSTOMER.CheckResult = false;
o.SOLDTOCUSTOMER.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
} var DESTINATIONList = uploadDataList.Select(o => o.DESTINATION.FieldText).Distinct();
if (DESTINATIONList.Count() > 1)
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.DESTINATION.CheckResult = false;
o.DESTINATION.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
}
if (DESTINATIONList.Any(x => string.IsNullOrEmpty(x)))
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.DESTINATION.CheckResult = false;
o.DESTINATION.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
} var ETADATEList = uploadDataList.Select(o => o.ETADATE.FieldText).Distinct();
if (ETADATEList.Count() > 1)
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.ETADATE.CheckResult = false;
o.ETADATE.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
}
if (ETADATEList.Any(x => string.IsNullOrEmpty(x)))
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.ETADATE.CheckResult = false;
o.ETADATE.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
} return uploadDataList;
}
//这个判断不相等就全部标记为false,这个是对的
if (SOLDTOCUSTOMERList.Count() > 1)
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.SOLDTOCUSTOMER.CheckResult = false;
o.SOLDTOCUSTOMER.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
}
//这个先判断为空,然后循环按理说应该是全部都标记了false才对,结果只有为空的标记了是为什么,虽然我想要的确实是这个效果
if (SOLDTOCUSTOMERList.Any(x => string.IsNullOrEmpty(x)))
{
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.SOLDTOCUSTOMER.CheckResult = false;
o.SOLDTOCUSTOMER.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});
}
uploadDataList.ForEach(o =>
{
o.CheckResult.CheckResult = false;
o.SOLDTOCUSTOMER.CheckResult = false;
o.SOLDTOCUSTOMER.CheckMsg.Add(new CheckMsg() { MsgType = MessageType.Failure, Msg = GlobalizationHelper.GetMessage("XXXXX") });
});不同之处在于,每段中,有所不同:
o.SOLDTOCUSTOMER
o.DESTINATION
o.ETADATE也简单,把这三个属性,从统一的接口继承,此接口包含CheckResult ,CheckMsg属性。最后,方法传入uploadDataList,而方法本身参数,使用接口
{
var SOLDTOCUSTOMERList = uploadDataList.Select(o => o.SOLDTOCUSTOMER.FieldText).Distinct();
if (SOLDTOCUSTOMERList.Count() > 1)
{
Fun( uploadDataList, "SOLDTOCUSTOMER");
}
if (SOLDTOCUSTOMERList.Any(x => string.IsNullOrEmpty(x)))
{
Fun( uploadDataList, "SOLDTOCUSTOMER");
}
var DESTINATIONList = uploadDataList.Select(o => o.DESTINATION.FieldText).Distinct();
if (DESTINATIONList.Count() > 1)
{
Fun( uploadDataList, "DESTINATION");
}
if (DESTINATIONList.Any(x => string.IsNullOrEmpty(x)))
{
Fun( uploadDataList, "DESTINATION");
}
var ETADATEList = uploadDataList.Select(o => o.ETADATE.FieldText).Distinct();
if (ETADATEList.Count() > 1)
{
Fun( uploadDataList, "ETADATE");
}
if (ETADATEList.Any(x => string.IsNullOrEmpty(x)))
{
Fun( uploadDataList, "ETADATE");
}
return uploadDataList;
}