任何人都知道列表中Where和FindAll之间的任何速度差异.我知道IEnumerable的一部分在哪里,FindAll是List的一部分,我只是好奇什么更快.
我只是想知道"FindAll"是否会比"Where"extentionMethod更快,为什么?
示例:
myList.FindAll(item=> item.category == 5);
Run Code Online (Sandbox Code Playgroud)
要么
myList.Where(item=> item.category == 5);
Run Code Online (Sandbox Code Playgroud)
哪个更好 ?
如果您有一个List,如果存在指定的属性或属性集,如何返回该项?
public class Testing
{
public string value1 { get; set; }
public string value2 { get; set; }
public int value3 { get; set; }
}
public class TestingList
{
public void TestingNewList()
{
var testList = new List<Testing>
{
new Testing {value1 = "Value1 - 1", value2 = "Value2 - 1", value3 = 3},
new Testing {value1 = "Value1 - 2", value2 = "Value2 - 2", value3 = 2},
new Testing {value1 = "Value1 - 3", value2 = …Run Code Online (Sandbox Code Playgroud) 在我工作的特定项目中,我有一个返回IList的方法.但是这个接口不包含where或FindAll过滤器.但是,当我打开一个新项目时,IList包含所有项目.有什么不同?
我有一个IEnumerable<T>我想根据LINQ谓词进行过滤.我试着用Where的IEnumerable,因为我通常做,但是这一次我偶然发现了一些有趣的事情.当IEnumerable使用谓词调用Where on时,我得到一个空列表作为回报.我知道它必须生成一个包含两个项目的列表.如果我改为使用FindAll相同的谓词,那么它会产生正确的结果.
任何人都可以向我解释,为什么会发生这种情况?我一直认为那Where是一种懒惰的版本FindAll,它也返回了一个IEnumerable而不是一个List.它必须有更多吗?(我做了一些研究,但无济于事.)
码:
IEnumerable<View> views = currentProject.Views.Where(
v => v.Entries.Any(e => e.Type == InputType.IMAGE || e.Type == InputType.VIDEO));
IEnumerable<View> views = currentProject.Views.FindAll(
v => v.Entries.Any(e => e.Type == InputType.IMAGE || e.Type == InputType.VIDEO));
Run Code Online (Sandbox Code Playgroud) 我有两种不同类型的对象,其ID字段具有可能匹配的ID.FindAll操作返回正确的非匹配对象,而Where操作返回所有对象.有人可以帮我理解为什么吗?
var _kenticoIDs = new HashSet<string>(_kenticoSessions.Select(p => p.AttendeeInteractiveSessionID));
var list = _aiSessionIDList.FindAll(p => !_kenticoIDs.Contains(p.SessionID));
var ienum = _aiSessionIDList.Where(p => !_kenticoIDs.Contains(p.SessionID));
Run Code Online (Sandbox Code Playgroud)
编辑:如果我对resultA变量执行.ToList(),则结果列表与结果变量相同.但是,当我在.ToList()之前检查两个变量(result/resultA)时,一个有6个值,一个有63个值.我觉得我错过了一些明显的东西.
c# ×6
linq ×3
list ×2
.net ×1
findall ×1
ienumerable ×1
ilist ×1
lambda ×1
performance ×1
where ×1