草庐IT

c# - 何时在 LINQtoObjects 上使用带有 lambda 的扩展方法来过滤集合?

我正在制作一些C#3集合过滤器的原型(prototype)并遇到了这个问题。我有一系列产品:publicclassMyProduct{publicstringName{get;set;}publicDoublePrice{get;set;}publicstringDescription{get;set;}}varMyProducts=newList{newMyProduct{Name="Surfboard",Price=144.99,Description="Mostimportantthingyouwilleverown."},newMyProduct{Name="Leash",Pr

c# - Linq to SQL 计数分组元素生成超时

我有一个看起来像这样的表:FruitID|FruitType23|2215|2256|1643|3我想通过FruitType获得一个名为TheFruitIDs的FruitIDs列表。这是我的:varTheCounter=(fromfinMyDC.FruitswhereTheFruitIDs.Contains(f.FruitID)groupfby0intoTheFruitsselectnewMyCounterMode(){CountType1=(int?)TheFruits.Where(f=>f.FruitType==1).Count()??0,CountType2=(int?)TheF

c# - 为什么 linq-2-sql 会创建额外的不必要的对象?

我在数据库中有一个简单的父子表CREATETABLE[Parent]([Id][int]IDENTITY(1,1)NOTNULL,[Name][nvarchar](256)NOTNULL)ALTERTABLE[Parent]ADDCONSTRAINT[PK_Parent_Id]PRIMARYKEY([Id])CREATETABLE[Child]([Id][int]IDENTITY(1,1)NOTNULL,[ParentId][int]NOTNULL,[Name][nvarchar](256)NOTNULL)ALTERTABLE[Child]ADDCONSTRAINT[PK_Child_

c# - Sum() 在 Entity Framework 查询中返回 null

我有一个包含这些行的大型EntityFramework查询。varprograms=frompinRepository.Query()wherep.OfficeId==CurrentOffice.IdlettotalCharges=p.ProgramBillings.Where(b=>b.Amount>0&&b.DeletedDate==null).Select(b=>b.Amount).Sum()lettotalCredits=p.ProgramBillings.Where(b=>b.Amount-b.Amount).Sum()letbillingBalance=(totalChar

c# - 跨多个线程的 Linq-to-SQL DataContext

如何跨多个线程处理Linq-to_SQLDataContext?我应该创建一个全局静态DataContext供所有线程使用并在最后提交更改,还是应该为每个线程创建一个Context并将该实例用于该线程内的所有内容? 最佳答案 DataContext不是线程安全的;直接从多个线程使用它会导致#fail;具有全局静态数据上下文会导致#fail并且会导致不受控制的内存增长(数据上下文包括身份管理器和每个获取对象的更改跟踪器;这只会增长随着时间的推移,随着越来越多的物体被触摸)理想情况下,数据上下文应该用于一个工作单元;旋转一个;做某事(在

c# - 将 Enumerable.ToDictionary 与扩展方法一起使用时为 "CLR detected an Invalid Program"

一位同事向我传递了一个有趣的代码示例,该示例在运行时因InvalidProgramException(“CLR检测到无效程序”)而崩溃。这个问题似乎发生在JIT时间,因为它编译得很好,但就在调用带有“违规”行的方法之前抛出异常-我猜是因为它正在被JIT。有问题的行是调用Enumerable.ToDictionary并将Func作为第二个参数传递。如果Func参数完全用lambda指定,它就可以工作;如果指定为方法组,如果失败。这两者一定是等价的吧?这让我(以及发现它的同事!)感到难过-这看起来确实像是一个JIT错误。[编辑:抱歉-我在代码示例中以错误的方式得到了通过和失败的情况-现在已

c# - 搜索实体的所有字段

我正在尝试对客户数据库实现“多功能框”类型的搜索,其中单个查询应尝试匹配客户的任何属性。这里有一些示例数据来说明我正在努力实现的目标:FirstName|LastName|PhoneNumber|ZipCode|...--------------------------------------------------Mary|Jane|12345|98765|...Jane|Fonda|54321|66666|...Billy|Kid|23455|12345|...如果查询是“Jane”,我希望返回第1行和第2行。12345的查询将生成行#1和#3。现在,我的代码看起来很像这样:IEn

c# - LINQ IEnumerable 的序列化结果

我有一个简单的值类型:[Serializable]privatestructTimerInstance{publicTimerInstance(stringstr,longnTicks){_name=str;_ticks=nTicks;}privatereadonlystring_name;privatereadonlylong_ticks;publicstringName{get{return_name;}}publiclongTicks{get{return_ticks;}}publicoverridestringToString(){returnstring.Format("{0

c# - 处理后访问的 DataContext

我正在使用ASP.NET4.0。我得到以下代码,返回错误“无法访问已处置的对象。对象名称:'DataContext在Dispose之后访问。'。"publicIEnumerableGetHeaders(){using(NSFChecksDataContextcontext=DataContext){IEnumerableheaders=(fromhincontext.BatchHeadersselecth);returnheaders;}}如果我将其更改为:publicIEnumerableGetHeaders(){using(NSFChecksDataContextcontext=D

c# - 有没有办法将 lambda 表达式作为变量或参数传递?

我需要将lambda查询作为参数传递,下面的代码是示例,我很想为它找到一个实现,有示例:像这样的东西:varexpr1=Where(n=>n>6).OrderBy(n=>n%2==0).Select(n=>n);varexpr2=TakeWhile((n,index)=>n>=index));然后像这样使用它:publicvoidUseLambda(IEnumerablesource,lambdaExpr){varitems=Expr.Compile(source);foreach(variteminitems)Console.Writeline(item.ToString());}p