我有一个通用的分页方法,我正在尝试调用这个方法。但是我得到了一个编译时错误:不能从使用中推断方法的类型参数。
方法:
public static IQueryable<T> OrderedPagedResults<T, TResult, TType>(IQueryable<T> query, int pageNum, int pageSize,
Expression<Func<T, TResult>> orderByProperty, bool isAscendingOrder, out
我有一个想法,想知道它是否可行。我有一个简单的带有属性的类,并且想要生成带有表达式的访问器。但是最终我需要得到一个Func<Test, string>,但是当我使用它们时我不知道它们的类型。一个小例子
class Program
{
static void Main(string[] args)
{
Test test = new Test();
test.TestString = "Blubb";
var actionStub = typeof(Helper).GetMethod("Creat
我正在尝试编写一个扩展方法,它将使用lambda表达式为我提供表示给定类型成员的MemberInfo。理想情况下,我希望能够写出
var info = MyType.GetMember(m => m.MyProperty);
或者,也可以接受
var info = typeof(MyType).GetMember(m => m.MyProperty);
甚至是
var info = typeof(MyType).GetMember((MyType m) => m.MyProperty);
我有一个可以工作的泛型方法签名,但需要我指定所有的类型参数,我非常希望C#能推断出它们。
昨天我被问了一个问题,把我搞糊涂了。我被要求实现接口IPeopleFinder
public interface IPeopleFinder
{
IEnumerable<Person> GetByAge(List<Person> people, int age);
IEnumerable<Person> Find<TType>(Func<IEnumerable<TType>, bool> filter);
}
在这个类上:
public class People
{
public List<S
给定以下代码
[Table("Bar")]
public class Foo {
[Column("BarID")]
public int Id { get; set; }
}
public static class MyExtensions {
public static string TableName(this Type type) {
var attrib = type.GetCustomAttribute<TableAttribute>(false);
return attrib?.Name ?? type.Na
我有一节课:
internal class Sensors
{
public JsonSensor<double> IOPcwFlSpr { get; set; } = new JsonSensor<double>();
}
internal class JsonSensor<TType> : IJsonSensor
{
public TType Value { get; set; }
}
我想要构建一个检索该属性的表达式。
private static readonly List < PropertyInfo > Prope
我试图使用lambda表达式对Users进行排序。我的用户类
public class Users
{
public long Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateCr
我有一个函数,它将表达式作为参数。表达式的类型是Func<int?>。但是,在计算表达式时,可空int将被解压缩。
见以下守则:
using System;
using System.Linq.Expressions;
public class Program
{
public static void Main()
{
var asd = new Asd() { Id = 1 };
Do(() => asd.Id);
Console.Read();
}
private static void
给定以下类:
public class Class1<TObject> {
protected void MethodA<TType>(Expression<Func<TObject, TType>> property, ref TType store, TType value) {
}
}
public class Class2<TObject> : Class1<Class2<TObject>>{
private int _propertyInt;
public int P
我有一个c#类,它按如下方式扩展类型:
public static class TypeExtensions
{
public static String nameof<TType, TMember>(this TType obj, Expression<Func<TType, TMember>> propertyAccessor)
{
if (propertyAccessor.Body.NodeType == ExpressionType.MemberAccess)
{
var mem
我有代码
public static class PredicateExtensions
{
public static Expression<Func<T, bool>> True<T>() { return f => true; }
public static Expression<Func<T, bool>> False<T>() { return f => false; }
public static Expression<Func<
我真的很难让这件事起作用。我有一个通用的存储库模式,我需要使用Microsoft假名对存储库界面进行存根处理。
public interface IDataAccess<T> where T : class
{
void Add(T entity);
void Update(T entity);
void Delete(T entity);
void Delete(Expression<Func<T, bool>> where);
T FindById(long id);
T FindById(string i
我正在尝试用ExpressionTrees构建一个DataTable过滤器,现在我创建了一个QueryBuilder助手类,如下所示。调用将如下所示:
var pb = PredicateBuilder.True<DataRowCollection>();
int i = 0;
foreach (var key in keys)
{
pb.And<DataRowCollection>(QueryBuild
在我的项目中,我包含了下面给出的特定模式类。我不知道如何实现这一点。这些代码是由以前的开发人员包含的。
public interface ISpecification<T>
{
Expression<Func<T, bool>> SpecExpression { get; }
bool IsSatisfiedBy(T obj);
}
public static class IExtensions
{
public static ISpecification<T> And<T>(
this IS
当我使用Expression.Lambda( ... ).Compile()从表达式树创建委托时,结果是第一个参数为的委托。
public static Func<T, T, T> CreateTest<T>()
{
ParameterExpression a = Expression.Parameter( typeof( T ) );
ParameterExpression b = Expression.Parameter( typeof( T ) );
Expression addition = Expression.Add( a, b );
我有以下简单的扩展类
public static class ExpressionOrExtension
{
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> source, Expression<Func<T, bool>> expression)
{
if (source == null)
return expression;
ret
如何转换:Expression<Func<T, object>>到Expression<Func<object>>
例如:
public class Entity
{
public virtual long Id { get; set; }
}
原点:
Expression<Func<Entity, object>> origin = x => x.Id;
目的地:
Entity alias = null;
Expression<Func<object>> destin
我试图根据所选属性的索引订购一个IEnumerable<MyClass>:
class MyClass
{
public string Name;
public string Value;
}
我有一个帮助方法来获得标准的Expression<>。
编译它是为了创建Func<>以帮助排序。
我很难让Func<>返回一个通用的TKey命令。
public Expression<Func<T, TKey>> Helper<T>(int propIdx)
{
var param = Expression
我正在创建一个Validator<T>类。我正在尝试为我的验证器实现Linq SelectMany扩展方法,以便能够使用Linq查询组合表达式并验证最终结果,即使基础值发生变化也是如此。
下面的测试代码演示了我的意图。
var a = 2;
var b = 3;
var va = Validator.Create(() => a, n => n >= 0 && n < 5);
var vb = Validator.Create(() => b, n => n >= 0 && n < 5);
var
如何在动态创建Expression树时创建强制转换?
问题是,我有一个string类型的属性
public class Test
{
public string Id { get; set; }
}
我想创建一个强类型的lambda表达式来表示一个委托,它返回一个object而不是一个string (Expression<Func<T, object>>)。
现在我正在做这件事:
private static Expression<Func<T, object>> CreateIdQuery()
{
Type type = typ