我有一个包含以下字段的课程。
class StandardizedModel
{
public string Case{ get; set; }
public DateTime? CreatedDateLocal { get; set; }
public DateTime? ClosedDateLocal { get; set; }
private string _status;
}
假设我使用此自定义类创建了两个列表。
List1(主要清单)
列表2
我要做的是比较两个列表中的元素,如果它们不同,我需要从list1返回原始的StandardsModel。
这两个列表的大小始终相同,并且案例将始终存在于两个列表中,但日期和状态可能会有所不同。
我尝试使用linq的zip来尝试比较元素,然后将它们添加到列表中但返回0。
List<StandardizedModel> testList = new List<StandardizedModel>();
var test = List1.Zip(List2, (a, b) =>
{
if (a =! b) { testList.Add(a);}
return testList;
});
答案 0 :(得分:3)
您可以Enumerable.Join
使用var changes = from m1 in list1
join m2 in list2 on m1.Case equals m2.Case
where m1.CreatedDateLocal != m2.CreatedDateLocal
|| m1.ClosedDateLocal != m2.ClosedDateLocal
|| m1._status != m2._status
select m1;
List<StandardizedModel> changeList = changes.ToList();
:
function AddDecimalToAmounts()
{
var ApproxAmount = $("#ApproximateValue_TextBox").val();
var ApproxAmountVis = $('#chqAdditional_div').is(':visible');
var UncryAmount = $("#UncryAmount_TextBox").val();
var UncryAmountVis = $('#chqAdditional_div').is(':visible');
if (ApproxAmountVis == true && UncryAmountVis== true)
{
if (//Code for if both amount fields are displayed and to add '.00' or not)
{
}
}
else if (ApproxAmountVis == false && UncryAmountVis== true)
{
if (//Code for if only the UncryAmount amount field is displayed and to add '.00' or not)
{
}
}
else if (ApproxAmountVis == true && UncryAmountVis== false)
{
if (//Code for if only the ApproxAmountVis amount field is displayed and to add '.00' or not)
{
}
}
}
答案 1 :(得分:-1)
您的最佳选择对于代码可重用性是覆盖对象的相等实现,以便您可以根据需要确定它们是否相等,如果您尝试在默认情况下,对象是引用,意味着它们指向相同的内存位置。如果它们是2个独立的实例,那将永远不会是这种情况。 (这就是你的拉链不起作用的原因)然后你可以用你的拉链来创建你的列表。