草庐IT

dynamic-linq

全部标签

c# - 获取随机子集合的最佳 LINQ 查询 - Shuffle

请提出一种最简单的方法,从具有“N”项的集合中获取计数为“n”的随机混洗集合。其中n 最佳答案 根据mquander的回答和DanBlanchard的评论,这里有一个LINQ友好的扩展方法,它执行Fisher-Yates-Durstenfeldshuffle://takenrandomitemsfromyourCollectionvarrandomItems=yourCollection.Shuffle().Take(n);//...publicstaticclassEnumerableExtensions{publicstatic

c# - 了解 LINQ to SQL 中的 .AsEnumerable()

给定以下LINQtoSQL查询:vartest=fromiinImportswherei.IsActiveselecti;解释后的SQL语句为:SELECT[t0].[id]AS[Id]....FROM[Imports]AS[t0]WHERE[t0].[isActive]=1假设我想在无法转换为SQL的选择中执行一些操作。据我了解,实现此目的的常规方法是执行AsEnumerable()从而将其转换为可用对象。鉴于此更新的代码:vartest=fromiinImports.AsEnumerable()wherei.IsActiveselectnew{//Makesomemethodcal

c# - 了解 LINQ to SQL 中的 .AsEnumerable()

给定以下LINQtoSQL查询:vartest=fromiinImportswherei.IsActiveselecti;解释后的SQL语句为:SELECT[t0].[id]AS[Id]....FROM[Imports]AS[t0]WHERE[t0].[isActive]=1假设我想在无法转换为SQL的选择中执行一些操作。据我了解,实现此目的的常规方法是执行AsEnumerable()从而将其转换为可用对象。鉴于此更新的代码:vartest=fromiinImports.AsEnumerable()wherei.IsActiveselectnew{//Makesomemethodcal

c# - 使用 LINQ 在 OrderBy 中自定义排序逻辑

在我希望以下划线“_”开头的项目位于列表底部的情况下,对字符串列表进行排序的正确方法是什么,否则一切都是按字母顺序排列的。现在我正在做这样的事情,autoList.OrderBy(a=>a.StartsWith("_")?"ZZZZZZ"+a:a) 最佳答案 如果您想要自定义排序,但不想提供比较器,您可以使用它-sql样式:autoList.OrderBy(a=>a.StartsWith("_")?2:1).ThenBy(a=>a); 关于c#-使用LINQ在OrderBy中自定义排序逻

c# - 使用 LINQ 在 OrderBy 中自定义排序逻辑

在我希望以下划线“_”开头的项目位于列表底部的情况下,对字符串列表进行排序的正确方法是什么,否则一切都是按字母顺序排列的。现在我正在做这样的事情,autoList.OrderBy(a=>a.StartsWith("_")?"ZZZZZZ"+a:a) 最佳答案 如果您想要自定义排序,但不想提供比较器,您可以使用它-sql样式:autoList.OrderBy(a=>a.StartsWith("_")?2:1).ThenBy(a=>a); 关于c#-使用LINQ在OrderBy中自定义排序逻

c# - LINQ to Entities 中的 "NOT IN"子句

无论如何,我是否可以创建一个notin子句,就像我在LinqtoEntities中的SQLServer中那样? 最佳答案 如果您使用内存中的集合作为过滤器,最好使用Contains()的否定。请注意,如果列表太长,这可能会失败,在这种情况下,您将需要选择另一种策略(请参阅下文了解如何使用完全面向数据库的查询的策略)。varexceptionList=newList{"exception1","exception2"};varquery=myEntities.MyEntity.Select(e=>e.Name).Where(e=>!e

c# - LINQ to Entities 中的 "NOT IN"子句

无论如何,我是否可以创建一个notin子句,就像我在LinqtoEntities中的SQLServer中那样? 最佳答案 如果您使用内存中的集合作为过滤器,最好使用Contains()的否定。请注意,如果列表太长,这可能会失败,在这种情况下,您将需要选择另一种策略(请参阅下文了解如何使用完全面向数据库的查询的策略)。varexceptionList=newList{"exception1","exception2"};varquery=myEntities.MyEntity.Select(e=>e.Name).Where(e=>!e

c# - 相交 LINQ 查询

如果我有一个IEnumerable,其中ClassA公开了一个long类型的ID属性。是否可以使用Linq查询获取ID属于第二个IEnumerable的所有ClassA实例?也就是说,这可以做到吗?IEnumerable=original.Intersect(idsToFind....)?其中original是IEnumerableidsToFind是IEnumerable. 最佳答案 是的。正如其他人回答的那样,您可以使用Where,但对于大型集合来说效率极低。如果性能是一个问题,您可以调用Join:varresults=orig

c# - 相交 LINQ 查询

如果我有一个IEnumerable,其中ClassA公开了一个long类型的ID属性。是否可以使用Linq查询获取ID属于第二个IEnumerable的所有ClassA实例?也就是说,这可以做到吗?IEnumerable=original.Intersect(idsToFind....)?其中original是IEnumerableidsToFind是IEnumerable. 最佳答案 是的。正如其他人回答的那样,您可以使用Where,但对于大型集合来说效率极低。如果性能是一个问题,您可以调用Join:varresults=orig

C# 4 表达式树中的 "dynamic"

我正在尝试弄清楚如何将所有部分组合在一起,希望能有一个具体的源代码示例作为一个简单案例的开始。考虑以下C#代码:Funcf=(x,y)=>x+y;我可以在运行时使用表达式树生成等效函数,如下所示:varx=Expression.Parameter(typeof(int),"x");vary=Expression.Parameter(typeof(int),"y");Funcf=Expression.Lambda>(Expression.Add(x,y),new[]{x,y}).Compile();现在给出以下lambda:Funcf=(x,y)=>x+y;我如何使用表达式树(大概还有E