草庐IT

c# - .NET LINQ 按日期(天)对实体进行分组

我在这里发布了同样的问题:LINQtoEntitiesgroup-byfailureusing.date但是,答案并非100%正确。它适用于所有情况,除非使用不同的时区。当使用不同的时区时,它也会按时区分组。为什么?我设法通过使用许多实体函数来绕过它。intlocalOffset=Convert.ToInt32(TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMinutes);varresults=(fromperfEntryindb.entrywhere(....)selectnew{perfEntry.Operati

C# 动态 Linq/查询

更新2我开始更多地听从James关于使用反射的建议,并得到了一些可以返回基于字符串变量的属性值的东西。我不想把它作为答案,因为我觉得它可能不是最好的解决方案。这是代码:DataContextdataBase=newDataContext();ListlistOfFields=newList;ListlistOfUsers=newList//strFieldsandstrNamesarestringsgeneratedfromlistOfFieldsandlistOfUsersIEnumerableuserInfo=dataBase.ExecuteQuery("select"+strFi

c# - nest yields to return IEnumerable<IEnumerable<T>> with lazy evaluation

我写了一个LINQ扩展方法SplitBetween类似于String.Split.>newList(){3,4,2,21,3,2,17,16,1}>.SplitBetween(x=>x>=10)[3,4,2],[3,2],[],[1]来源://partitionsequenceintosequenceofcontiguoussubsequences//behaveslikeString.SplitpublicstaticIEnumerable>SplitBetween(thisIEnumerablesource,FuncseparatorSelector,boolincludeSepa

c# - 在 Select 和 Where 调用中重用 Linq to Entities 的 Expression<Func<T, TResult>

假设我有一个实体对象定义为publicpartialclassArticle{publicId{get;set;}publicText{get;set;}publicUserId{get;set;}}根据文章的某些属性,我需要确定给定用户是否可以删除该文章。所以我添加了一个静态方法来进行检查。像这样的东西:publicpartialclassArticle{publicstaticExpression>CanBeDeletedBy(intuserId){//Addlogictobereusedherereturna=>a.UserId==userId;}}现在我可以做using(MyE

c# - 为什么 List<>.OrderBy LINQ 在 Debug模式下比 IComparable+List<>.Sort 更快?

我感兴趣的是使用LINQ或通过实现IComparable接口(interface)和List.Sort对我的类进行排序是否会更快。当LINQ代码更快时,我感到非常惊讶。为了进行测试,我使用不太恰当的名称TestSort创建了一个非常简单的类,实现了IComparable。classTestSort:IComparable{privateintage;privatestringgivenName;publicintAge{get{returnage;}set{age=value;}}publicstringGivenName{get{returngivenName;}set{givenN

c# - 将 LINQ 表达式传递给另一个 QueryProvider

我有一个简单的自定义QueryProvider,它接受一个表达式,将其转换为SQL并查询一个sql数据库。我想在QueryProvider中创建一个小的缓存来存储经常访问的对象,这样就可以在不命中数据库的情况下进行检索。QueryProvider有方法publicobjectExecute(System.Linq.Expressions.Expressionexpression){///BuildsanSQLstatementfromtheexpression,///executesitandreturnsmatchingobjects}缓存作为这个QueryProvider类中的一个

c# - 如何并行运行 LINQ 'let' 语句?

我有这样的代码:varlist=newList{1,2,3,4,5};varresult=fromxinlist.AsParallel()leta=LongRunningCalc1(x)letb=LongRunningCalc2(x)selectnew{a,b};假设LongRunningCalc方法每个都需要1秒。上面的代码运行大约需要2秒,因为虽然5个元素的列表是并行操作的,但从let语句调用的两个方法是顺序调用的。但是,这些方法也可以安全地并行调用。它们显然需要为select合并回来,但在那之前应该并行运行-select应该等待它们。有什么办法可以实现吗?

c# - LINQ 到 SQL : intermittent AccessViolationException wrapped in TargetInvocationException

几周以来,我们的ASP.NetWeb应用程序遇到了W3WP崩溃。这些是在我们的网络服务器更新后开始的。我们的应用程序没有改变,多年来一直稳定。我们的情况好像很像thisearlierquestion.和thisquestion也可能是相关的,但在我们的例子中,查询在99.9%的使用时间中运行良好。我们使用了大量未编译的LINQ查询,并尝试编译它们是否可以防止这些崩溃。崩溃的数量急剧减少,但它们仍然会发生。同样将我们的查询包装在trycatch中然后捕获TargetInvocationException是行不通的。未捕获异常。当崩溃发生时,我们会得到一个WER报告并可以检索崩溃转储。来自

c# - 在哪些情况下我需要为 IEnumerable 和 IQueryable 创建两种不同的扩展方法?

假设我需要一个扩展方法,它只从不同的来源中选择所需的属性。源可以是数据库或内存中的集合。所以我定义了这样的扩展方法:publicIQueryableSelectDynamic(thisIQueryablesource,...)这适用于IQueryable。但是,我还必须为IEnumerable调用此函数。在这种情况下,我可以在.AsQueryable()的帮助下调用它:myEnumerable.AsQueryable().SelectDynamic(...).ToList();两者都很好。如果两者都正常工作,在哪些条件下我必须为同一目的创建两种不同的扩展方法,一种用于IEnumerab

c# - 有没有一种简单的方法可以将(lambda 表达式)字符串解析为 Action 委托(delegate)?

我有一个方法可以根据传递给它的Action委托(delegate)来改变“帐户”对象:publicstaticvoidAlterAccount(stringAccountID,ActionAccountAction){AccountsomeAccount=accountRepository.GetAccount(AccountID);AccountAction.Invoke(someAccount);someAccount.Save();}这按预期工作...AlterAccount("Account1234",a=>a.Enabled=false);...但现在我想尝试做的是有一个像这