我想要获得方法System.Linq.Queryable.OrderyBy<T, TKey>(the IQueryable<T> source, Expression<Func<T,TKey>> keySelector)方法,但我总是想出空值。
var type = typeof(T);
var propertyInfo = type.GetProperty(group.PropertyName);
var propertyType = propertyInfo.PropertyType;
var sorterType = typeof(Fun
我有一个从数据库获取数据的方法,它是通用的:
public static IQueryable<T> GetData<T>(IQueryable<T> data, some more parameters)
数据是未过滤的db实体集合,GetData对该集合进行过滤、排序、跳过……
当我像往常一样提供IQueryable类型的变量(例如,T是Document)作为第一个参数时,它当然会起作用:
IQueryable<Document> data = ...
GetData<Document>(data, ....);
现在,我需要动
*滚动到最后工作方案*
我的所有实体框架模型都使用部分,这些部分实现了我自己的IEntity接口:
public interface IEntity
{
int Status { get; set; }
int ID { get; set; }
}
这允许我根据以下函数(简化版本)过滤实现此接口的任何实体:
public static IQueryable<T> FilterByStatus<T>(this IQueryable<T> query, int status) where T : class, IEntit
我有IQueryable< T>源代码,并且我想动态调用IQueryable< T>.Count()。
因此,我需要在IQueryable中声明的Count方法的MethodInfo。
这是它来自msdn的签名(IQueryable<>格式):
public static int Count<TSource>(
this IQueryable<TSource> source
)
这就是我得到的结果:
Expression expr; //this is expression which holds my IQueryable&
我想在.NET压缩框架的项目中使用Linq IQueryable工具包。CF中的Linq功能有点模糊--即: IQueryable接口不可用。所以我找到了第三方库,它实现了我所需要的缺失的功能。
现在我遇到了缺少"MethodBase.GetCurrentMethod()“方法的问题。有cca 100个方法,它使用这种方法。所以我不需要"GetCurrentMethod()“的精确克隆。这种特定情况的变通方法就足够了。
原始代码示例:
public static bool Any<TSource>( this IQueryable<TSource> so
我在ASP.NET核心项目中使用Syncfusion的网格组件。当对网格视图进行排序、过滤和分页时,它会对我的IQueryable数据源执行LINQ操作。 在搜索文本字段时,使用.Contains(string)方法,该方法不能转换为SQL查询,将在本地求值。 有没有办法强制EF Core改变LINQ查询(或者我自己做)来使用.EF.Functions.Like(列,字符串),因为它可以被翻译成SQL? var dataSource = ...;
var operation = new QueryableOperation();
// Sorting
if (dm.Sorted != nu
我正在尝试实现一个定制的LinQ Count()方法。基本上,我在这里试图实现的是,在调用Count方法之前,我希望筛选出属性IsDeleted设置为true的所有元素。因此,我创建了一个扩展类,并添加了以下方法:
public static int Count2<T>(this IEnumerable<T> source, Func<T, bool> selector)
where T : Model
{
return source.Where(x => !x.IsDeleted).Count(selector);
}
public
我有一个BindingSource,它的DataSource (定义为对象)在运行时可以是任何类型的IEnumerable类(比如IList<Foo>)。我需要将其转换为IQueryable<T>,以便可以将其传递给通用扩展:
IOrderedQueryable<TEntity> OrderUsingSortExpression<TEntity>(this IQueryable<TEntity> source, string sortExpression) where TEntity : class
到目前为止,我有这样的想法:
st
我正在尝试模拟System.Data.Entity.IDbSet,使其返回一些数据(在本例中只是一个空集合):
var mock = new Mock<IDbSet<Setting>>();
mock.Setup(x => x.GetEnumerator()).Returns(Enumerable.Empty<Setting>().GetEnumerator());
var myEnumerator = mock.Object.GetEnumerator();
var count = mock.Object.Count();
不出所料,这里的myEnu
IEnumerable<T>的情况是LINQ- to -object,而IQueryable<T>是允许LINQ- to -SQL的接口,然而IQueryable<T>继承了IEnumerable<T>,那么当IQueryable<T>过滤内存中的对象时,IEnumerable<T>如何过滤数据库中的行呢?
public IEnumerable<T> ExecuteStoredProcedure<T>(params object[] parameters)
{
Type genericType = typeof(T);
string commandthing = genericType.Name.Replace("Result", "");
//_db is my Linq To Sql database
return _db.E
对于实体框架,扩展方法Select()和OrderBy()都返回一个ObjectQuery,定义为:
public class ObjectQuery<T> : ObjectQuery, IOrderedQueryable<T>,
IQueryable<T>, <... more interfaces>
Select()的返回类型为IQueryable<T>,OrderBy的返回类型为IOrderedQueryable<T>。因此,您可以说,两者都返回相同的类型,但在不同的包装。幸运的是,因为现在我们可以在调用Th
我使用了fluent NHibernate,我需要随机化查询的结果,我想要的是如下所示:
select * from table order by newid()
方法应该是扩展NHibernate IQueryable生成器以使用类似于QueryableExtension.RandomOrder<T>(this IQueryable<T> list)的方法。
在这里的博客:和这个:
我写了这段代码:
public class RandomOrderGenerator : BaseHqlGeneratorForMethod
{
public RandomOrde
可能重复:
我已经将LINQ存储库实现如下。GetAll方法正在重新生成一个泛型列表,而不是IQueryable。然而,在大多数示例和教程中,pit将返回IQueryable。重新测试IQueryable的优点是什么?
using System.Linq;
namespace RepositoryLayer
{
public interface IRepository<T> where T : class
{
//System.Linq.IQueryable<T> GetAll();
System.Collections.Generic.List&
使用下面的q.GroupBy方法时,我遇到了一个错误。上面写着:
不能隐式地将类型System.Linq.IQueryable<System.Linq.IGrouping<TRet, TModel>>转换为System.Linq.IQueryable<TModel>
上面是抛出的错误
public static IQueryable<TModel> GroupByDynamic<TModel>(this IQueryable<TModel> q, string name)
{
Typ
在我正在阅读的"Pro in SQL2010“(APress,Freeman和Ratz)一书中,作者指出IQueryable只会从Linq to C#命名空间中的类返回,而不是在通用的Linq命名空间中。我对此感到惊讶,因为我认为任何结尾有位置的东西都必须是IQueryable。事实证明我错了,这里是IEnumerable的一个扩展。自IQueryable<T> : IEnumerable<T>以来,您可以在其中任何一个上添加where子句。
作者是对的吗?
我说的是Framework类,而不是任何最终用户生成的代码。
我似乎无法在反射中创建一个与LINQ查询等价的查询。
目标是在实体框架DBContext上运行查询,但指定Tablename和where子句。有几个表,所以我不想对不同的表复制/粘贴相同的LINQ。
下面的代码适用于LINQ,但是反射等效(尽管我将其转换为System.Linq.IQueryable),不允许我添加一个.where子句。
我在班里包括了using System.Linq;。
我从堆栈溢出中研究的示例公开了Where()子句。
这可能是我忽略的小东西。(缺少推荐信?)
// Link to TREESTRUCTURES Database
var D
我可以将where作为lambda表达式传递到作为参数之一的方法中。
方法-
public Collection<SelectionItemByGUID> GetLookupsByCashBookId<T>(Func<T, object> cashbookID) where T : class
{
var items = new Collection<SelectionItemByGUID>();
var itemsT = All<T>(null)
目前,我有这个方法来比较两个数字
Private Function ETForGreaterThan(ByVal query As IQueryable(Of T), ByVal propertyValue As Object, ByVal propertyInfo As PropertyInfo) As IQueryable(Of T)
Dim e As ParameterExpression = Expression.Parameter(GetType(T), "e")
Dim m As MemberExpression = Expression.Make
所以..。我有一些WCF服务,这些wcf服务是用反射调用的。它们返回具有不同对象的数组,这些对象针对每个被调用的服务。
我的任务是获取这些对象,并将它们映射到我的BusinessObjects中的对象。它们是由T定义的。
public virtual IQueryable<T> GetAll()
{
//Methods retreives an array of objects.
var blah = _getAllFromWcf.Invoke(_rawServiceObject, new object[] {});
我正在尝试使用拉迪斯拉夫·马恩卡的建议来使用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using System.Data.Entity;
namespace SimTask.Data.EF4
{
public static class Extensions
{
public static IQueryable<T> IncludeMultiple<T
问题:
我有一个关于类型转换/泛型的问题--这是我的方法的签名:
public bool FilterMyModel<T>(T model)
T是类型Person,而model实际上是类型为ExtendedPerson的对象,它是Person的子类。
我需要创建一个IQueryable,它具有ElementType of ExtendedPerson并包含在模型参数中传递的对象。
我尝试过的:
我尝试了这三种构造查询的方法,但在所有3种情况下,生成的queryable的ElementType都是Person (如果我将这个IQueryable输入到过滤代码中,它就无法工作)。
va