我有两个项目列表,
public class DataExcel
{
public String Name{ get; set; }
public String Color { get; set; }
public String Comments { get; set; }
public String Management { get; set; }
}
// before inserting data into DB i am fetching all the values into a List
//This method will get all the details from Db
List<DataExcel> dBUpdate = GetAllExistingDrugList();
//some logic to insert data into DB
//After inserting the data again i am fetching all the values into another List
List<DataExcel dBUpdate1 = GetAllExistingDrugList();
现在我想比较dBUpdate
和dBUpdate1
,如果药物名称相同但其他细节已被修改,那么我应该显示已修改和插入的药物数量。< / p>
我插入的第一次插入示例
1.Name: “A” 红色” 评论:“第一次插入” 管理层:“慢”
2.Name: “B” 颜色:“绿色” 评论:“第2次插入” 管理层:“慢”
第二次插入
1.Name: “A” 颜色:“绿色” 评论:“第一次插入” 管理层:“慢”
2.Name: “B” 颜色:“绿色” 评论:“第2次插入” 管理层:“慢”
所以在“,第二次插入我已经将”A“的颜色从”红色“改为”绿色“现在我应该将更新计数显示为1。
任何人都可以帮助我
答案 0 :(得分:0)
我真的不知道这是不是最好的方法。但这是我发生的最简单也是第一件事:
int UpdateCount = 0;
foreach (DataExcel item in dBUpdate)
{
if(!dBUpdate1.Contains(item))
{
UpdateCount++;
}
}
答案 1 :(得分:0)
这样的事情可行:
var count = (from d1 in dBUpdate join d2 in dBUpdate1 on d1.Name equals d2.Name
where d1.Color != d2.Color || d1.Comments != d2.Comments || d1.Management != d2.Management
select d1).Count();
两个列表都已连接,但仅当d1和d2具有相同的名称且颜色,注释或管理中有不同的条目时才会加入。因此,它是所有已更改药物的清单,最终只是计算在内。
答案 2 :(得分:0)
你可以尝试这个:
// counter
int updatedRecords = 0;
foreach(var dataExcel in dBUpdate)
{
// Find the associated record for the dataExcel in the second list.
var dataExcel1 = dBUpdate1.SingleOrDefault(x=>x.Name==dataExcel.Name);
// If the associated record found check if anything changed
// to it's properties values.
if(dataExcel1!=null)
{
// If any change has been made, update the counter.
if(dataExcel1.Color!= dataExcel.Color ||
dataExcel1.Comments != dataExcel.Comments ||
dataExcel1.Management != dataExcel.Management )
updatedRecords++;
}
}
答案 3 :(得分:0)
int count = 0;
dBUpdate.ForEach(dbu =>
{
dBUpdate1.Where(dbu1 => dbu1.Name.Equals(dbu.Name)).ToList().ForEach(dbu11 =>
{
if (!dbu11.Color.Equals(dbu.Color) || !dbu11.Comments.Equals(dbu.Comments) ||
!dbu11.Management.Equals(dbu.Management))
{
count++;
}
});
});
We can use linQ expressions also.