当前位置: 首页 > 编程语言 > C#

如何获得IEnumerable的第一个元素分享

时间:2023-04-10 19:02:29 C#

C#学习教程:如何获取IEnumerable首元素宽度=(短)image.Columns;picture.Height=(short)image.Rows;休息;这是类型的确切声明:publicclassImageList:IEnumerable,IDisposablevarfirstImage=imgList.Cast().First();如果不会使用LINQ,也可以直接通过imgList.GetEnumerator()获取枚举数,然后执行.MoveNext()移动到第一个元素。.Current然后会给你第一个元素。extension.First()将获得枚举中的第一项。如果集合为空,则抛出异常。.FirstOrDefault()将返回.FirstOrDefault()的默认值(引用类型为null)。明智地选择你的武器!可能与您当前的情况略有无关,但还有.SingleOrDefault().Single()和.SingleOrDefault()返回第一个元素并在集合中没有元素或集合中有元素时抛出异常多个元素(.SingleOrDefault())。如果您的逻辑仅依赖于列表中的单个(或零个)对象,这些将很有用。尽管我怀疑它们不是您想要的。我有一个问题,我将数据源从绑定源更改为实体框架查询。varquery=dataSourceasIQueryable;varvalue=query.Where("prop=@0",value).Cast().SingleOrDefault();使用实体框架将抛出??异常“无法将类型‘客户’转换为‘对象’。LINQtoEntities仅支持转换EDM原语或枚举类型。我的代码所在的类没有引用模型的库,所以...Cast是不可能的。无论如何我使用这个方法varquery=dataSourceasIQueryable;vartargetType=query.GetType().GetGenericArguments()[0];varvalue=query.Where("prop=@0",value).SingleOrDefault(targetType);与使用反射的IEnumerable扩展相结合返回方法.Invoke(null,new[]{enumerable});}privatestaticLazysingleOrDefaultMethod=newLazy(()=>typeof(Extensions).GetMethod("SingleOrDefault",BindingFlags.Static|BindingFlags.NonPublic));privatestaticTSingleOrDefault(IEnumerableenumerableen){可返回的.SingleOrDefault();可选地实现每种类型的缓存以提高性能。以上就是C#学习教程:如何获取IEnumerable的第一个元素。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: