首页 > 解决方案 > 比较列表和使用 C# 的数据表值和更新列表

问题描述

我将 List 作为方法的输入,并将其与数据表值进行比较,并根据数据表中的值更新相同的列表。例如,

class Account
{
   string accountno{ get; set;}
   string status {get; set;} 
   string bankName {get; set;}
}

List<Account> will have

{"ABC123", "", "HDFC"}
{"ABC345", "", "BOA"}
{"ABC111", "", "BOA"}
{"ABC222", "", "RBS"}
{"ABC333", "", "RBS"}
{"ABC789", "ACTIVE", "RBS"}

数据表将具有如下值,

AccountNo  Status 
ABC123     ACTIVE
ABC345     INACTIVE
ABC456     ACTIVE
ABC789     INACTIVE

我想在比较 AccountNo 的列表中编写 LINQ 查询和更新状态。来自数据表。

有时数据表也可能有 0 条记录。

foreach(DataRow dr in Datatable)
{
   Account acc = list.Find(a=>a.accountno == dr.ItemArray["AccountNo"])
   acc.Status = //assign value here
}

这是一种粗略的方法,我不是 LINQ 专家。

请帮我写查询。

标签: c#linq

解决方案


可能是这样的。我们加入集合,accountno然后迭代匹配项,将帐户状态设置为匹配的数据行状态值。

var q = from account in accounts
        join row in dt.AsEnumerable() on account.accountno equals row.Field<string>("AccountNo")
        select new { account, status = row.Field<string>("Status")};
            
    foreach (var match in q)
        match.account.status = match.status;

加入会比使用 list.Find 更有效率


推荐阅读