gpt4 book ai didi

c# - 在 C# 中使用 Linq 创建仅包含唯一值的 DataTable

转载 作者:行者123 更新时间:2023-12-04 17:23:05 25 4
gpt4 key购买 nike

我有一个数据表 dt_Candidates

      Candidate      |   First Name   |   Last Name   
--------------------|----------------|---------------
John, Kennedy | John | Kennedy
Richard, Nixon | Richard | Nixon
Eleanor, Roosevelt | Eleanor | Roosevelt
Jack, Black | Jack | Black
Richard, Nixon | Richard | Nixon

我想在没有嵌套循环的情况下创建,最好使用 Linq,一个包含ONLY 唯一值的数据表,例如这个名为 dt_Candidates2 的数据表:

      Candidate      |   First Name   |   Last Name   
--------------------|----------------|---------------
John, Kennedy | John | Kennedy
Eleanor, Roosevelt | Eleanor | Roosevelt
Jack, Black | Jack | Black

还有一个名为 RejectedCandidates 的列表或数组,其中包含不同的重复项

RejectedCandidates = {"Richard, Nixon"}

最佳答案

如前所述,我不认为这里真的需要 LINQ。它可以是这样的:

DataTable dt = new DataTable();
dt.Columns.Add("Candidate");
dt.Columns.Add("First");
dt.Columns.Add("Last");
dt.PrimaryKey = new []{ dt.Columns["Candidate"] }; //means that dt.Find() will work

while(...){
string candidate = ...

if(dt.Rows.Find(candidate) != null)
RejectList.Add(...);
else
dt.Rows.Add(...);
}

为此避免在 DataTable 上使用 LINQ 的 .Any。开始不仅很痛苦,因为它需要转换步骤或扩展库(see here),然后它会使用循环来查找您要查找的信息; PrimaryKey 的内置机制使用哈希表进行更快的查找。

关于c# - 在 C# 中使用 Linq 创建仅包含唯一值的 DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65002056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com