相关疑难解决方法(0)

foreach vs LINQ找到集合之间的差异

我有一个ArrayList ids包含StringID的对象,另一个ArrayList objs包含具有字符串ID字段的对象.现在我有代码,找到ids没有匹配的代码,objs如下所示:

var missing = new List<string>();

foreach (MyObj obj in objs)
{
    if (!ids.Contains(obj.ID))
    {
       missing.Add(obj.ID);
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好用.但是我把它重写为一个更好的"在LINQ中思考"的练习:

var missing = objs.Cast<MyObj>().Select(x => x.ID).Except(ids.Cast<string>());
Run Code Online (Sandbox Code Playgroud)

我期望这个LINQforeach+ Contains方法(特别是由于Cast调用),但LINQ的运行速度要快得多.什么是LINQ方法,以不同的方式提供性能优势?

c# linq

1
推荐指数
1
解决办法
870
查看次数

有什么好处可以使用!而不是<in For loop C#?

我已经看到在这两种方式中使用For循环.使用!而不是使用有任何积极的方面<吗?哪一个更快?

for (i = 0; i != imax; ++i)
{
}
Run Code Online (Sandbox Code Playgroud)

要么

for (i = 0; i < imax; ++i)
{
}
Run Code Online (Sandbox Code Playgroud)

c# for-loop

0
推荐指数
1
解决办法
201
查看次数

string.contains来自combobox的项目

另一个复杂的,我到处搜索,只能找到'如何在组合框中找到字符串'的答案

我想知道相反的情况.我有一个充满城市(字符串)的组合框,我传递了一个地址字符串.

我想搜索我的地址字符串,看它是否包含我的组合框中当前的任何一个城市.

例如.组合框包含:伦敦,巴黎,柏林

传入的地址:

  • 123,街道,城镇,伦敦,邮编(真)
  • 123,街道,城镇,罗马,邮编(假)

我正在思考

address.Contains(combobox.Any().ToString());
Run Code Online (Sandbox Code Playgroud)

但你可能会说,这不起作用!

c# search combobox winforms

0
推荐指数
1
解决办法
1089
查看次数

不循环地从列表中检索元素

我想在不使用 for 或 foreach 循环的情况下从我的列表中检索一个元素或它的列表,因为我的列表非常大,我还需要对结果进行另一个循环,因此从算法复杂性的角度来看,使用它不是一个好主意彼此内部的两个循环。

c# list

0
推荐指数
1
解决办法
3815
查看次数

标签 统计

c# ×4

combobox ×1

for-loop ×1

linq ×1

list ×1

search ×1

winforms ×1