不幸的是,这些方法的名称产生了可怕的搜索术语,我一直无法找到解释这些方法之间差异的好资源 - 就像何时使用每种方法一样.
谢谢.
编辑:
我试图完全理解的那种查询是这样的:
context.Authors.Where(a => a.Books.Any(b => b.BookID == bookID)).ToList();
Run Code Online (Sandbox Code Playgroud)
感谢所有回答的人.
我很惊讶,无论我是在前置还是附加LINQ扩展方法都没关系.
hugeList.Where(x => x.Text.Contains("10000")).FirstOrDefault();hugeList.FirstOrDefault(x => x.Text.Contains("10000"));
var hugeList = Enumerable.Range(1, 50000000)
.Select(i => new { ID = i, Text = "Item" + i });
var sw1 = new System.Diagnostics.Stopwatch();
var sw2 = new System.Diagnostics.Stopwatch();
sw1.Start();
for(int i=0;i<1000;i++)
hugeList.Where(x => x.Text.Contains("10000")).FirstOrDefault();
sw1.Stop();
sw2.Start();
for(int i=0;i<1000;i++)
hugeList.FirstOrDefault(x => x.Text.Contains("10000"));
sw2.Stop();
var result1 = String.Format("FirstOrDefault after: {0} FirstOrDefault before: {1}", sw1.Elapsed, sw2.Elapsed);
//result1: FirstOrDefault after: 00:00:03.3169683 FirstOrDefault before: 00:00:03.0463219
sw2.Restart();
for (int i = 0; i < 1000; i++) …Run Code Online (Sandbox Code Playgroud)