对于 List 等都是继承可枚举Enumerable这时获取第一个元素可以使用FirstOrDefault。如果使用Find那么需要数组的类型是IList。..._items[index]; } return default (T); } 而 FirstOrDefault 的代码存在 foreach ,这会调用列表的 GetEnumerator 方法,而且还会在结束的时候调用...这样 FirstOrDefault 的性能就比 Find 稍微差一些。...public static TSource FirstOrDefault(this IEnumerable source, Func predicate...source1)) return source1; } return default (TSource); } 所以在对于 List 类型的获得第一个或默认请使用 Find ,其他的请使用FirstOrDefault
本文记录在 ConcurrentDictionary 使用 FirstOrDefault 获取到非预期的首项的问题 在 dotnet 里面,无论是对 List 列表,还是 Dictionary 字典等获取首项...,使用 FirstOrDefault 总是可以获取到第一个加入到集合或字典里面的元素。...在 ConcurrentDictionary 里面如果使用 FirstOrDefault 方法,则随机获取到字典里面的一项,但对相同的一个 ConcurrentDictionary 对象多次调用 FirstOrDefault...时判断获取到的元素是否首个加入字典的元素 运行代码可以看到,使用 FirstOrDefault 获取到的元素,不是第一个加入字典的元素。...,字典里面存放的顺序和传入的 Key 对象的 Hash 有关,调用 FirstOrDefault 方法时获取到的是里面的 Table 字典的按照内存空间顺序的首项 由此原理即可知道,使用 FirstOrDefault
= "File").Select(k => k.Tags.FirstOrDefault(t => t.Name == "Image Width")).FirstOrDefault().Description...= "File").Select(k => k.Tags.FirstOrDefault(t => t.Name == "Image Height")).FirstOrDefault().Description...= "File").Select(k => k.Tags.FirstOrDefault(t => t.Name == "Make")).FirstOrDefault(x => x !...= "File").Select(k => k.Tags.FirstOrDefault(t => t.Name == "Model")).FirstOrDefault(x => x !...= "File").Select(k => k.Tags.FirstOrDefault(t => t.Name == "GPS Latitude")).FirstOrDefault(x => x !
扩展方法性能更高,详见:C# Find vs FirstOrDefault - 林德熙。...FirstOrDefault 我写了两段代码,然后在单元测试中测量它们的性能。方法我按不同顺序写了两遍,试图降低初始化影响和偶然事件的影响。..._B0_FirstOrDefault2() { _testTarget.FirstOrDefault(x => x > count - 1); } [TestMethod...而且,Find 是 FirstOrDefault 性能的两倍!!!...▲ 调用 Find 和 FirstOrDefault 我写的 For 和 Find 中一定还存在着哪里不一样——对,是索引器!
db.PlanTopograpger.Where(x=>x.PlanID == temp.ID).Count() > 0) { model.Topograph = db.PlanTopograpger.FirstOrDefault...x.PlanID == temp.ID).Topographer.Name; model.Topograph += ” “; model.Topograph = db.PlanTopograpger.FirstOrDefault...x => x.PlanID == temp.ID).Advisor.Name; model.Design += ” “; model.Design += db.PlanDesignerAdvisor.FirstOrDefault...} if(db.PlanChecker.Where(x => x.PlanID == temp.ID).Count() > 0) { model.Checker = db.PlanChecker.FirstOrDefault...if(db.PlanExecute.Where(x => x.PlanID == temp.ID).Count() > 0) { model.Executer = db.PlanExecute.FirstOrDefault
AdvPictureSize"); //获取图片尺寸 var resolutionsA = picTypes.Where(o => o.Key == 1).FirstOrDefault...().Value.Split('*'); var resolutionsB = picTypes.Where(o => o.Key == 2).FirstOrDefault()....Value.Split('*'); var resolutionsC = picTypes.Where(o => o.Key == 3).FirstOrDefault().Value.Split...; this.SavePic(subItems, SubPicA.Width, SubPicA.Height, picTypes.Where(o => o.Key == 1).FirstOrDefault...; this.SavePic(subItems, SubPicC.Width, SubPicC.Height, picTypes.Where(o => o.Key == 3).FirstOrDefault
dataContext; } public Notice FindNotice(long id) { var notice = _dataContext.Notices.FirstOrDefault...dataContext; } public Notice FindNotice(long id) { var notice = _dataContext.Notices.FirstOrDefault...Task.Run(() => { try { var one = _dataContext.Notices.FirstOrDefault...public Notice FindNotice(long id) { var notice = _dataContext.Notices.FirstOrDefault...context = _serviceProvider.GetService(); var one = context.Notices.FirstOrDefault
2、list.FirstOrDefault(t => t == 666); 会遍历所有的记录然后再返回结果。...3、list.Where(t => t == 666).ToList().FirstOrDefault(); 不如list.FirstOrDefault()的性能好, 类似的方法还有 list.First...而FirstOrDefault则在集合类型下都可以使用,但是它会遍历所有的记录。 在通用性和效率的共同驱使下,让我们不得不针对不同情况做出不同选择。正所谓鱼与熊掌不可兼得。...所以结论就是: 在使用List情况下使用 Find,而在其他IEnemrable类型时使用 FirstOrDefault 最佳。 ----
的思考与总结: 针对马拉松赛事: (1)当前的赛事是否存在 var eventMessage = _eventSystemMessageService.GetAllEventSystemMessages().FirstOrDefault...= _registratorMessageService.GetAllRegistratorMessages(); //所有数据 var entity = rms.FirstOrDefault...return View(model); } (3)手机号码是否存在 var phoneValidEnity = rms.FirstOrDefault...); return View(model); } (4)邮箱地址(号码)是否存在 var emailEntity = rms.FirstOrDefault
from a in db.CarModel where a.ID==id select a).FirstOrDefault...db.CarModel // where a.ID==car.ID // select a).FirstOrDefault...a in db.CarModel where a.ID == id select a).FirstOrDefault...Model.HotelModelContainer(); Customer cus = db.Customer.Where(c => c.ID == entity.ID).FirstOrDefault...Model.HotelModelContainer(); Customer cus = db.Customer.Where(c => c.ID == (int)Id).FirstOrDefault
Type type) { return _documentationProviders.Select(x => x.GetDocumentation(type)).FirstOrDefault...return _documentationProviders .Select(x => x.GetDocumentation(member)) .FirstOrDefault...{ return _documentationProviders.Select(x => x.GetDocumentation(actionDescriptor)).FirstOrDefault...{ return _documentationProviders.Select(x => x.GetDocumentation(actionDescriptor)).FirstOrDefault...setting = actionDescriptor.ControllerDescriptor.GetCustomAttributes().FirstOrDefault
SysUser 1、获取实体类型 var entityType=Assembly.Load("XXX.Entity").GetTypes().Where(a =>a.Name == entityName).FirstOrDefault...DBContext.Model.GetEntityTypes().Where(a => a.ClrType.Name == "传入的实体名称").Select(a => a.ClrType.Namespace).FirstOrDefault...AppDomain.CurrentDomain.GetAssemblies().Where(a => a.FullName.Contains(name)).Select(a => a.FullName).FirstOrDefault...); 3、获取实体类型 var entityType = Assembly.Load(assemblyName).GetTypes().Where(a => a.Name == "传入的实体名称").FirstOrDefault
{ //根据浏览次数查询 var entity= _dxcBaseMessageService.GetAllDxcBaseMessages().FirstOrDefault...dxcBaseMessageService.UpdateDxcBaseMessage(entity); var BrowseTimes = _dxcBaseMessageService.GetAllDxcBaseMessages().FirstOrDefault...//根据浏览次数查询 var BrowseTimes = _dxcBaseMessageService.GetAllDxcBaseMessages().FirstOrDefault
Value; 23 var starttag = atts.Where(x => x.Name == "start-tag").FirstOrDefault()?....Value; 24 var start = atts.Where(x => x.Name == "start").FirstOrDefault()?....Value; 25 var endtag = atts.Where(x => x.Name == "end-tag").FirstOrDefault()?....Value; 26 var end = atts.Where(x => x.Name == "end").FirstOrDefault()?....Value; 31 var offset = atts.Where(x => x.Name == "data-offset").FirstOrDefault()?.
First()和FirstOrDefault() First(Expression>) FirstOrDefault(Expression>) 两个方法都是从集合中筛选满足条件的第一个元素...区别:当没有从集合中筛选到满足的条件的元素时,First将会报错,FirstOrDefault则不会报错. ? Average()方法 该方法用于计算平均值 ?...from\in\select\where\orderby\ascdening\descending\group\by\into\join); 另一种方案是使用扩展方法=> (Where\Select\FirstOrDefault
FirstOrDefault(c => c.Type == nameof(ClaimTypes.NameIdentifier))?....FirstOrDefault(c => c.Type == nameof(ClaimTypes.Name))?....FirstOrDefault(c => c.Type == nameof(ClaimTypes.Email))?....FirstOrDefault(c => c.Type == "profileId")?....Claims.FirstOrDefault(c => c.Type == claimType); } } ② 编写继承自ApplicationService、AbpController的通用服务类
=> t.Id == 4).Update(t =>new User() { NickName = "2224114" ,Phone = "1234"} ); 3、正确使用Find(id=10)来代替FirstOrDefault...(t=>t.id=10) Find会优先查询缓存,当前面已经查询过这条数据的时候使用,而FirstOrDefault每次都会查询数据库;当id=10的数据被修改之后,find查出的数据是新数据。...QueryTrackingBehavior.NoTracking; 这样就把所有表查询设置成了非追踪状态 5、使用 .Any(),尽量不使用 判断查询出的列表是否有值时,使用 .Any(),尽量不使用 .Count(); .FirstOrDefault
return firstOrDefault == null ?...string.Empty : firstOrDefault.ErrorMessage; } } public string Error { get...return firstOrDefault == null ?...string.Empty : firstOrDefault.ErrorMessage; } } public string Error { get...return firstOrDefault == null ?
student.Name},学生年龄:{student.Age}"); } Console.WriteLine($"\n学生姓名:{studentData.FirstOrDefault...().Name},学生年龄:{studentData.FirstOrDefault().Age}"); Console.WriteLine($"学生姓名:{studentData.Last...} public override string ToString() { return $"\n学生姓名:{students.FirstOrDefault...().Name},学生年龄:{students.FirstOrDefault().Age}"; } } /// /// 定义实体类 /
领取专属 10元无门槛券
手把手带您无忧上云