草庐IT

c# - 为什么可空值序列的 Linq-to-Objects 总和本身可以为空?

像往常一样,int?表示System.Nullable(或System.Nullable`1[System.Int32])。假设您在内存中有一个IEnumerable(例如List),我们称它为seq;然后你可以找到它的总和:varseqSum=seq.Sum();当然这会转到扩展方法重载int?IEnumerable.Sum()(documentation)这实际上是System.Linq.Enumerable上的静态方法.但是,该方法永远不会返回null,那么为什么返回类型声明为Nullable?即使在seq的情况下是一个空集合,或者更一般地说,是一个所有元素都是null的集合类型

c# - Linq To XML、yield 等

我想知道是否有.NET库或第3方工具来执行EntityFramework,例如对XML文档的LINQ查询。我知道已经有LINQtoXML,它允许您对XDocument对象执行查询,该对象已经加载到内存中,但是如果XML文档的大小非常大(超过1GB)?我希望有一个选项可以将此查询交给XmlReader而不是XDocument对象。是否可以直接开箱即用? 最佳答案 看看thiscodeplexproject. 关于c#-LinqToXML、yield等,我们在StackOverflow上找到

c# - Linq-to-Entity 查询的动态谓词

以下Linq-to-Entities查询工作正常:varquery=repository.Where(r=>r.YearProp1.HasValue&&r.YearProp1>=minYear&&r.YearProp1我的数据库有十几个列都报告与年份相关的信息(short?数据类型)。我想对所有这些列重复使用相同的Linq-to-Entities逻辑。像这样的东西:Funcfx=GetYearPropertyFunction();varquery=repository.Where(r=>fx(r).HasValue&&fx(r)>=minYear&&fx(r)这会导致错误:LINQto

c# - 使用 DateTime.Now 插入值时 SqlDateTime 溢出

最近我在尝试执行db.SubmitChanges()时遇到了很奇怪的错误:SqlDateTimeoverflow.Mustbebetween1/1/175312:00:00AMand12/31/999911:59:59PM.关键是,我只使用DateTime.Now来设置对象中的属性,并且在调用Response.Write(DateTime.Now.ToString());之后它显示17-04-201318:03:13应该是这样。以前不会发生,现在功能总是中断。我完全无能为力-我的SQL服务器上的日期似乎没问题。可能是什么原因造成的?编辑我认为这不会有帮助(在IMO中出现任何错误太简单了

c# - 设计建议。使用 DataTable 或 List<MyObject> 作为通用规则检查器

我有大约100,000行通用数据。此数据的列/属性是用户可定义的,并且是常用数据类型(字符串、整数、double、日期)。将有大约50个列/属性。我有两个需求:能够使用表达式计算新的列/属性例如Column3=Column1*Column2.最终,我希望能够通过回调来使用外部数据,例如Column3=Column1*获取温度表达式比较简单,数学运算,sum,count&IF是唯一需要的函数。能够过滤/分组数据并执行聚合例如Sum(Data.Column1)Where(Data.Column2=="blah")据我所知,我有两个选择:1.使用DataTable。=>上面的第1点是通过使用

c# - 如何在 Linq to SQL 中使用 distinct 和 group by

我正在尝试将以下sql转换为Linq2SQL:selectgroupId,count(distinct(userId))fromprocessroundissueinstancegroupbygroupId这是我的代码:varq=fromiinProcessRoundIssueInstancegroupibyi.GroupIDintogselectnew{Key=g.Key,Count=g.Select(x=>x.UserID).Distinct().Count()};当我运行代码时,我不断收到无效的GroupID。有任何想法吗?似乎distinct把事情搞砸了..这里是生成的sql:

c# - 如何从名称的字符串 [] 创建动态 LINQ 选择投影函数?

使用C#...有什么方法可以从数组中为LINQ选择方法上的投影函数指定属性名称。publicclassAlbum{publicintId{get;set;}publicstringName{get;set;}publicshortRate{get;set;}publicstringGenre{get;set;}publicshortTracks{get;set;}}publicclassClass1{privatevoidSome(){//Exampleofsourcevarnames=new[]{"Id","Name","Tracks"};varquery=myDataContext

c# - 在 System.Linq.Expressions 中不带大小写(但使用默认值)切换

我尝试使用System.Linq.Expressions创建一个switch表达式:varvalue=Expression.Parameter(typeof(int));vardefaultBody=Expression.Constant(0);varcases1=new[]{Expression.SwitchCase(Expression.Constant(1),Expression.Constant(1)),};varcases2=newSwitchCase[0];varswitch1=Expression.Switch(value,defaultBody,cases1);vars

c# - 如何为 IQueryable.Count 获取 ToTraceString

我使用((ObjectQuery)IQueryable).ToTraceString()获取和调整将由LINQ执行的SQL代码。我的问题是,与大多数IQueryable方法不同,IQueryable.Count定义如下:publicstaticintCount(thisIQueryablesource){return(int)source.Provider.Execute(Expression.Call(typeof(Queryable),"Count",newType[]{source.ElementType},source.Expression));}执行查询而不编译并返回IQue

c# - LINQ Count() until,这样效率更高吗?

假设我想检查集合中是否至少有N个元素。这比做更好吗?Count()>=N使用:publicstaticboolAtLeast(thisIEnumerableenumerable,intmax){intcount=0;returnenumerable.Any(item=>++count>=max);}甚至publicstaticboolEquals(thisIEnumerableenumerable,intamount){returnenumerable.Take(amount).Count()==amount;}我如何进行基准测试?//////Returnswhethertheenum