执行“不在”使用 linq 从 2 个数据表进行查询

发布于 2024-10-31 17:23:26 字数 682 浏览 0 评论 0原文

我有一个包含“InvalidCodes”的数据表。

在将数据上传到数据库之前(数据仍在数据表中),我想对数据表执行 linq 以删除无效条目并将它们移动到另一个数据表

数据表 allEntries (尚未上传到数据库中的条目) 数据表 InvalidCodes(单列数据表 - 从数据库检索) 数据表 invalidEntries

现在“allEnties”包含有效条目和无效条目。 “allEntries”上的 linq 查询应将不存在的代码条目移至 invalidEntries 数据表。

请帮我执行此操作。

下面是我形成的查询,但它无效

string query = "select [CityCode] from [StateCity] ";
DataTable citylist = getDataTableFromSelect(query);

var result = from myrow in inputDt.AsEnumerable()
             where !myrow.Field<string>("CityCode").Contains(from myrow2 in citylist.AsEnumerable() select myrow2.Field<string>("CityCode") )
             select myrow;

i have a datatable which contains "InvalidCodes".

Before uploading the data to database(data is still in datatable), i want to perform linq on the datatable to remove Invalid entries and move them in another datatable

datatable allEntries ( entries yet to be uploaded in database)
datatable InvalidCodes(single column datatable - retrieved from database)
datatable invalidEntries

right now "allEnties" contains valid entries and invalid entries. the linq query on "allEntries" should move the nonexistend code entries to invalidEntries datatable.

plz help me perform this.

below is the query i formed but its not valid

string query = "select [CityCode] from [StateCity] ";
DataTable citylist = getDataTableFromSelect(query);

var result = from myrow in inputDt.AsEnumerable()
             where !myrow.Field<string>("CityCode").Contains(from myrow2 in citylist.AsEnumerable() select myrow2.Field<string>("CityCode") )
             select myrow;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

亚希 2024-11-07 17:23:26

我将为无效城市代码创建一个哈希集 - 这将使代码能够快速/有效地识别哪些代码位于无效集中。

例如:

var invalidCityCodes = from myrow2 in citylist.AsEnumerable()
                       select myrow2.Field<string>("CityCode");

var invalidCityCodeHashSet = new HashSet<string>(invalideCityCodes);

var result = from myrow in inputDt.AsEnumerable()
             where !invalidCityCodeHashSet.Contains(myrow.Field<string>("CityCode"))
             select myrow;

I'd make a HashSet for the invalid city codes - this will allow the code to quickly/efficiently identify which of the codes are in the invalid set.

e.g. something like:

var invalidCityCodes = from myrow2 in citylist.AsEnumerable()
                       select myrow2.Field<string>("CityCode");

var invalidCityCodeHashSet = new HashSet<string>(invalideCityCodes);

var result = from myrow in inputDt.AsEnumerable()
             where !invalidCityCodeHashSet.Contains(myrow.Field<string>("CityCode"))
             select myrow;
冷心人i 2024-11-07 17:23:26

您还可以将结果放在 2 个不同的列表中,然后您可以
使用

List1 = List1.RemoveAll(Item=>List2.Contains(Item))

这对我来说效果很好,也对你有用。

You can also take both the results in 2 Different Lists and then you can
use

List1 = List1.RemoveAll(Item=>List2.Contains(Item))

This works fine with me and will work for you also.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文