c# - 比较列表和使用 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 专家。
请帮我写查询。
解决方案
可能是这样的。我们加入集合,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 更有效率
推荐阅读
- c++ - c++:分段错误,核心转储
- c - 在获取这些字符串时,如何将字符串复制到另一个用 '\n' 字符分隔的数组?
- c# - 未放置在组合框中时获得组合框项目视觉效果
- google-cloud-firestore - Google Cloud Firestore:如何列出带有子集合的文档?
- python - 在熊猫上使用操作时,找不到在 for 循环中迭代两种方式的方法?
- java - T6 压缩 Tiff 图像
- ios - 如何在编辑其他字段时自动折叠表单中的 DatePicker?
- python - 为 asyncio 制作 tqdm 进度条
- python - 为什么即使在执行 nltk.download 并且所有软件包都已正确安装后,nltk word_tokenize 也无法正常工作?
- laravel - Adminox - 管理员仪表板 laravel-backpack