我有一个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)
我期望这个LINQ比foreach+ Contains方法慢(特别是由于Cast调用),但LINQ的运行速度要快得多.什么是LINQ方法,以不同的方式提供性能优势?
我已经看到在这两种方式中使用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) 另一个复杂的,我到处搜索,只能找到'如何在组合框中找到字符串'的答案
我想知道相反的情况.我有一个充满城市(字符串)的组合框,我传递了一个地址字符串.
我想搜索我的地址字符串,看它是否包含我的组合框中当前的任何一个城市.
例如.组合框包含:伦敦,巴黎,柏林
传入的地址:
我正在思考
address.Contains(combobox.Any().ToString());
Run Code Online (Sandbox Code Playgroud)
但你可能会说,这不起作用!
我想在不使用 for 或 foreach 循环的情况下从我的列表中检索一个元素或它的列表,因为我的列表非常大,我还需要对结果进行另一个循环,因此从算法复杂性的角度来看,使用它不是一个好主意彼此内部的两个循环。