Tag: iqueryable

IQueryable vs IQueryable

我只是想知道为什么有一个没有通用function的IQueryable版本?

使用ExpressionVisitor获取所有“where”调用

我有一个查询,像这样: var query = from sessions in dataSet where (names.Contains(sessions.Username)) where (sessions.Login.TimeOfAction == dt) select new { sessions.Username, sessions.Login, sessions.Logout, sessions.Duration }; 我想实现一个ExpressionVisitor来提取where子句作为Lambda,但到目前为止只能使用一个名为’InnermostWhereFinder’的类来获得第一个,该类来自TerraServer Web服务的自定义查询提供程序上的MSDN教程。 它是: internal class InnermostWhereFinder : ExpressionVisitor { private MethodCallExpression innermostWhereExpression; public MethodCallExpression GetInnermostWhere(Expression expression) { Visit(expression); return innermostWhereExpression; } protected override Expression VisitMethodCall(MethodCallExpression expression) { if (expression.Method.Name == “Where”) innermostWhereExpression = […]

存储库模式中的IQueryable与IEnumerable,延迟加载

我已经阅读了一些文章,声明IEnumerable用于模仿存储过程或限制数据库。 外部提供商丢失了延迟加载能力。 IQueryable可以为开发人员提供更大的灵活性。 懒惰装载就在那里。 在性能方面,两者都消耗了大量的性能..哪一个更优选?

C#,Linq2Sql:是否可以将两个可查询连接成一个?

我有一个可查询的地方,我使用各种Where和WhereBetween语句将集合缩小到某个集合。 现在我需要添加一个Where || WhereBetween Where || WhereBetween 。 换句话说,我不能像现在一样把它们连在一起,因为它可以作为一个And。 那么,我该怎么做呢? 我看到两种可能性: 从我拥有的一个查询中创建两个查询 ,一个使用Where ,一个使用WhereBetween 。 然后将它们连接起来 。 不知道这是否可能? 此外,虽然不是在我的特定情况下,你很可能最终会重复… 以某种方式合并Where表达式和WhereBetween创建的表达式 。 首先,如上所述,我不确定是否可能。 如果是的话,我不太确定这是一个很好的方法。 第二,我可以看到一个选项,但不完全确定所有的细节。 下面是我的另一个问题中的WhereBetween方法,我现在使用它并且效果很好: public static IQueryable WhereBetween( this IQueryable source, Expression<Func> selector, IEnumerable<Range> ranges) { var param = Expression.Parameter(typeof(TSource), “x”); var member = Expression.Invoke(selector, param); Expression body = null; foreach (var range in […]

将字符串解析为LINQ查询

将LINQ字符串解析为查询的最佳实践方法是什么? 换句话说,什么方法最有意义转换: string query = @”from element in source where element.Property = “”param”” select element”; 成 IEnumerable = from element in source where element.Property = “param” select element; 假设source引用本地范围中的IEnumerable或IQueryable 。

IQueryable OfType 其中T是运行时类型

我需要能够得到类似以下的东西才能工作: Type type = ??? // something decided at runtime with .GetType or typeof; object[] entityList = context.Resources.OfType().ToList(); 这可能吗? 如果有任何新内容允许,我可以使用.NET 4。

构建C#EntityFramework IQueryable表达式时出现问题

所以我正在尝试构建一个半复杂的搜索表达式,但我不得不尝试创建一个基本的。 用于getValueExpression的表达式如下所示: x => x.PropertyA != null ? x.PropertyA.ToShortDateString() : “” //nullable datetime x => x.PropertyB //string property x => x.PropertyC != null x.PropertyC.ToString() : “” //nullable int 这是我的函数代码,当getValueExpression属于Func类型时,它当前是错误的,无法与字符串进行比较,这非常有意义,我理解为什么会这样,但是我无法弄清楚如何制作一个表达式获取getValueExpression的值以与要搜索的值进行比较。 任何帮助或领导正确的方向将不胜感激。 public static IQueryable Search(this IQueryable source, Expression<Func> getValueExpression, string searchOption, string searchValue) { var searchValueExpression = Expression.Constant(searchValue); var comparisonExpression = Expression.Equal(getValueExpression, searchValueExpression); var lambdaExpression = […]

无法将IQueryable 转换为IOrderedQueryable错误

我有以下LINQ代码: var posts = (from p in db.Posts .Include(“Site”) .Include(“PostStatus”) where p.Public == false orderby p.PublicationTime select p); if (!chkShowIgnored.Checked) { posts = posts.Where(p => p.PostStatus.Id != 90); } 最后一行(额外的地方)给了我错误: 无法将类型’System.Linq.IQueryable’隐式转换为’System.Linq.IOrderedQueryable’。 我不确定这意味着什么…… 为什么我收到此错误? 它出现了一次我在查询中添加了“orderby”子句,之前它编译得很好,所以我对所发生的事情有一种预感,但我无法完全理解它。