【发布时间】:2019-01-09 13:32:55
【问题描述】:
LINQ 是否通过排序/转换数据结构进行任何优化?
即
LINQ 是否在此代码中进行迭代,或者是否对数据进行了任何类型的排序/转换以优化查找操作?
var list = new List<IdCard> {new IdCard(){Name = "a", Number = 1}, new IdCard() { Name = "b", Number = 2 } };
var idA = list.FirstOrDefault(id => id.Name == "a");
var idB = list.FirstOrDefault(id => id.Name == "b");
我试图了解我的 LINQ 代码是否直接转换为迭代方法。如果是,那么上面的代码最好使用字典查找(假设有很多查找)而不是依赖 LINQ,对吧?
【问题讨论】:
-
您可以通过将鼠标悬停在方法上并在 Visual Studio 中按 f12 来查看 FirstOrDefault 方法在幕后的作用。然后,您可以检查天气您的方法是否有效。但是要摆脱多次查找,您可以使用 where 和 contains,您可以将 id 列表传递给 contains 方法。