草庐IT

c# - 访问 IQueryable 后面的 DataContext

是否可以访问IQueryable后面的DataContext对象?如果是,怎么做到的? 最佳答案 DataContext特定于LINQtoSQL,所以您大概是在谈论LINQtoSQL查询?如果是这样,则没有安全的方法来执行此操作-您必须诉诸黑客,例如使用反射来检索底层DataQuery对象的私有(private)“上下文”字段:staticDataContextGetContext(IQueryableq){if(!q.GetType().FullName.StartsWith("System.Data.Linq.DataQuery

c# - 每n分钟分组

我正在玩弄LINQ,我想知道按分钟分组有多容易,但我不想每分钟分组一次,而是每5分钟分组一次。例如,目前我有:varq=(fromcrinJK_ChallengeResponseswherecr.Challenge_id==114groupcr.Challenge_idbynew{cr.Updated_date.Date,cr.Updated_date.Hour,cr.Updated_date.Minute}intogselectnew{Day=newDateTime(g.Key.Date.Year,g.Key.Date.Month,g.Key.Date.Day,g.Key.Hour,

c# - 如何在 EF Where() 子句中使用 Predicate<T>?

我正在尝试在我的EF过滤代码中使用谓词。这个有效:IQueryablefiltered=customers.Where(x=>x.HasMoney&&x.WantsProduct);但是这个:PredicatehasMoney=x=>x.HasMoney;PredicatewantsProduct=x=>x.WantsProduct;IQueryablefiltered=customers.Where(x=>hasMoney(x)&&wantsProduct(x));运行时失败:TheLINQexpressionnodetype'Invoke'isnotsupportedinLINQt

c# - 动态添加新的 lambda 表达式以创建过滤器

我需要对ObjectSet进行一些过滤以获得我需要的实体:query=this.ObjectSet.Where(x=>x.TypeId==3);//thisisjustanexample;在代码的后面(在启动延迟执行之前)我再次像这样过滤查询:query=query.Where();到目前为止效果很好。这是我的问题:实体包含一个DateFrom属性和一个DateTo属性,它们都是DataTime类型。它们代表一个时间段。我需要过滤实体以仅获取属于时间段的集合的实体。集合中的句点不一定是连续的,因此,检索实体的逻辑如下所示:entities.Where(x=>x.DateFrom>=Pe

c# - 扩展 System.Data.Linq.DataContext

我有一个反射(reflect)我的dbml文件的类,它扩展了DataContext,但由于某些奇怪的原因,它告诉我System.Data.Linq.DataContext'doesnotcontainaconstructorthattakes'0'arguments"我已经按照各种教程进行操作,但没有遇到这个问题,而且VS似乎无法修复它。这是我的实现usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Data.Linq;usingSystem.Data.Linq.Mapping;usingSy

c# - 如果联接中有多个字段,您如何在 Linq 中离开联接?

我之前问过一个关于whyleftjoinsinLinqcan'tusedefinedrelationships的问题;迄今为止,我还没有得到满意的答复。现在,在并行轨道上,我已经接受我需要使用join关键字,就好像我的对象之间没有定义任何关系一样,我正在尝试找出如何在Linq中表达我的查询。麻烦的是,它是多个表之间左连接的集合,连接中涉及多个字段。没有办法简化这一点,所以这里是SQL的所有未掩饰的荣耀:select*fromTreatmentPlantpjoinTreatmentPlanDetailtpdontpd.TreatmentPlanID=tp.IDjoinTreatmentA

c# - LINQ 中的 OrderBy 和 Top 性能良好

从一个非常大的集合中获取前10条记录并使用自定义OrderBy的好方法是什么?如果我使用LINQtoObjectsOrderBy方法,它会很慢并且会占用大量内存,因为它会使用新顺序创建一个全新的集合。我想要一个带有下面签名的新方法,它不会重新排序整个集合并且速度非常快:publicstaticIEnumerableOrderByTop(IEnumerablesource,FunckeySelector,IComparercomparer,inttopCount)我尝试编写它,但它变得非常复杂,我认为使用Aggregate或其他东西可能有更简单的方法。任何帮助将不胜感激。

c# - Linq to Objects - 从数字列表中返回数字对

varnums=new[]{1,2,3,4,5,6,7};varpairs=/*somelinqmagichere*/;=>对={{1,2},{3,4},{5,6},{7,0}}pairs的元素应该是双元素列表,或者是一些具有两个字段的匿名类的实例,比如new{First=1,Second=2}. 最佳答案 默认的linq方法都不能通过单次扫描懒惰地执行此操作。压缩序列本身会进行2次扫描,并且分组并不完全是惰性的。最好的办法是直接实现它:publicstaticIEnumerablePartition(thisIEnumerable

c# - LINQ to Dynamics CRM 在本地查询过滤记录

我使用CRM2011RC(v5)LINQ-to-CRM提供程序编写了一个LinqtoCRM查询。我有一个本地声明的List,我想将其加入CRM实体,并且我希望在CRM服务器上执行查询。一个示例可能会有所帮助:MyObjectmyObject=newMyObject();ListmyAccountsList=newList();myAccountsList.Add(newmyAccount(){AccountNumber="123"};myAccountsList.Add(newmyAccount(){AccountNumber="456"};myObject.ListOfAccount

c# - 为什么转换为 IEnumerable 的数组会忽略延迟执行?

我今天遇到了这个问题,但我不明白发生了什么:enumFoo{Zero,One,Two}voidMain(){IEnumerablea=newFoo[]{Foo.Zero,Foo.One,Foo.Two};IEnumerableb=a.ToList();PrintGeneric(a.Cast());PrintGeneric(b.Cast());Print(a.Cast());Print(b.Cast());}publicstaticvoidPrintGeneric(IEnumerablevalues){foreach(Tvalueinvalues){Console.WriteLine(v