获取内部对象的属性
嗨,我正在尝试使用该代码获取属性用户.包含用户的客户的email.但是它是一个对象(用户的用户),因此引发了异常.我应该解决什么? public static IQueryable OrderByField(this IQueryable q, string SortField, bool Ascending) { if (!string.IsNullOrWhiteSpace(SortField)) { var param = Expression.Parameter(typeof (T), "p"); var prop = Expression.Property(param, SortField); var exp = Expression.Lambda(prop, param); string method = Ascendi
18 2024-04-26
编程技术问答社区
用多个属性构建动态GroupBy选择器表达式树
我是为Groupby构建动态表达树.我想实现的只是这样. var NestedGrouped = listOfPerson.GroupByMany(x => x.Name,x=>x.Age).ToList(); 我的人班就像: - class Person { public string Name{ get; set; } public int Age{ get; set; } public float Salary{ get; set; } } public class GroupResult { public object Key { get; set; } public int Count { get; set; } public IEnumerable Items { get; set; } public IEnumerable SubGroups { get; se
18 2024-04-26
编程技术问答社区
需要帮助建立Linq.Expression到Enumerable.GroupBy的关系
我正在尝试生成一个表达树,该表格最终调用了一系列枚举类型的groupby方法. 以简化的形式我正在尝试这样的事情: IEnumerable list = new List{new Data{Name = "A", Age=10}, new Data{Name = "A", Age=12}, new Data{Name = "B", Age=20}, new Data{Name="C", Age=15}}; Expression data = Expression.Parameter(typeof(IEnumerable), "data"); Expression arg = Expression.Parameter(typeof(Data), "arg"); Expression nameProperty = Expression.PropertyOrField(arg, "Name"); Expression gro
28 2024-04-26
编程技术问答社区
关于通用LINQ OrderBy Lambda表达式的帮助
试图在可让工作的工作中获得订单,没有太多运气. 这是我的方法: public ICollection FindAll(Expression> predicate, Expression> orderingKey) where T : Post { return repository .Find() .Where(predicate) .OfType() .OrderBy(orderingKey) .ToPagedList(); } 如果我这样做的话,订购有效: FindAll(p => p.PostName == "Foo", p => p.PostId); ,但如果我想这样做: FindAll(p => p.PostName == "Foo", p =
14 2024-04-26
编程技术问答社区
如何评估一个lambda表达式以确定对象类型
public class Tomato {} public class Potato {} public class UIPotatoBinding(Expression> expression) { // What to put here to make sure lambda results in Potato(s) } public class UITomatoBinding(Expression> expression) { // What code do I need to put here to determine if the lambda expression being passed in // results in Tomato, List, IEnumerable, ObservableCollection // Tomato
20 2024-04-26
编程技术问答社区
使用表达式访问嵌套属性和集合
我有以下类: public class Person { [JsonProperty("name")] public string Name { get; set; } [JsonProperty("age")] public int Age { get; set; } [JsonProperty("country")] public string Country { get; set; } [JsonProperty("profession")] public Profession Profession { get; set; } [JsonProperty("hobbies")] public List Hobbies { get; set; } } public class Profession { [JsonProperty("name")] publi
20 2024-04-26
编程技术问答社区
在DataColumn上使用'SUBSTRING(expression, startIndex, length)'与BindingSource。
我试图通过匹配源字符串的开始和搜索字符串的长度来过滤数字字符串. 所有过滤的列都是字符串.大多数只是单词,但是有一个列的值看起来像001302:Alt#.基础数据源很烂,但我无法更改结构.这些数字是根据左手值(即050110和050534均与客户端(05),052123相关的与客户端(05)发票(2))相关的.我的用户希望能够在DataGridView中搜索数据,然后按组过滤该列(即输入05,并查看以05或052开头的所有内容,并参见052000-052999) 我正在生成过滤器字符串,并使用数据集作为DataSource和表作为DataMember在BindingSource上设置过滤器属性.我的其余过滤起作用,我唯一的问题是在数字过滤器上.当我设置BindingSource.Filter属性时,它会引发ArgumentOutOfRange异常. 'system.argumentOutofRangeException'的未经处理的例外 发生在system.data.d
24 2024-04-26
编程技术问答社区
Entity-Framework使用表达式来建立全局和可重复使用的过滤器/查询规则
给定以下Linq-Query: var query1 = dbContext.MainTable.Where(m => m.MainId == _mainId).SelectMany(sub => sub.SubTable1) .Select(sub1 => new { sub1.CategoryName, VisibleDivisions = sub1.SubTable2 .Where(sub2 => sub2.Status == "Visible") .Select(sub2 => new { /* select only what needed */ }) }); 从我的主桌开始,我想将所有SUB1与SUB2相关的所有SUB1一起选择. 该查询按预期工作,生成一个将击中数据库的单个
8 2024-04-26
编程技术问答社区
如何用表达式树编写linq.join来做动态查询
我似乎找不到任何地方的答案... 目的是找到一种使用表达树语句进行linq .join()的方法. so ... so ...使用class Person { public string Name { get; set; } } class Pet { public string Name { get; set; } public Person Owner { get; set; } } public static void JoinEx1() { Person magnus = new Person { Name = "Hedlund, Magnus" }; Person terry = new Person { Name = "Adams, Terry" }; Person charlotte = new Person { Name = "Weiss, Charlotte" }; Pet barley = new Pet { Name = "Barley", Owner
18 2024-04-26
编程技术问答社区
使用微软脚本控制来评估'If'表达式(通过c#)。
我有一些C#代码,该代码使用Microsoft脚本控制来评估一些表达式: using MSScriptControl; // references msscript.ocx ScriptControlClass sc = new ScriptControlClass(); sc.Language = "VBScript"; sc.AllowUI = true; try { Console.WriteLine(sc.Eval(txtEx.Text).ToString()); } catch (Exception ex) { Console.WriteLine(ex.Message); } (txtex是一个简单的文本字段) 数值表达式:" 6+4"," COS(34)"," ABS(-99)","圆形(1.234,2)"等 布尔语表达:" true或false"," 1 = 2"是 但是如何评估简单的"如果"?我尝试了" if(true,
10 2024-04-26
编程技术问答社区
如何在C#中从字符串中创建表达式?
mongodb c#驱动程序(或任何其他库)中只能将表达式视为一个参数,例如: query.SortByDescending(x => x.Name) // sort by name for example 我想做的是将字段"名称"作为字符串接收,并且能够在运行时进行排序: var sortBy = "Name"; query.SortByDescending(x => x."SortyBy") // something like this 即如何创建表达式为x => x.(value of sortBy)? 解决方案 这个问题基本上具有与答案本质上是相同的原因是,FieldDefinition FieldDefinition是可隐式铸造的,因此您可以在看到FieldDefinition参数的任何地方传递string. 因此,我们可以使用.Sort方法(因为这需要SortDefinition)并使用Builders.Sort
16 2024-04-26
编程技术问答社区
我如何将一个字符串具体化为实际的类型?
我正在创建这样的投影变量: var projection = Builders.Projection .Include(x => x.Name); Include方法采用表达式Expression> field. 我想做的是将名为key的字符串参数转换为x.Name,以便能够在运行时动态投影Items的其他字段. var key = "Name"; var projection = Builders.Projection .Include(x => x."key"); 解决方案 作为评论作为将来参考的答案,您可以应用 .Include(key) 提供string值,即字段名称. 从 ProjectDefinition.Include
14 2024-04-26
编程技术问答社区
Return 语句不进行评估,Expression 只评估其下的规则
美好的一天,我正在基于Antlr4的解释器上工作,我正在将功能功能添加到该语言中,而无需返回语句函数工作,但返回语句不起作用,或者我可以说返回语句不起作用,因为返回语句返回Invalid Expression . 这是我完整的语法和访客类实现. DECLARE : 'declare'; SET : 'set'; TO : 'to'; SHOW : 'show'; SHOWLINE : 'showline'; REPEAT : 'repeat'; WHILE : 'while'; TIMES : 'times'; END_REPEAT : 'end repeat'; IF : 'if'; THEN : 'then'; ELSE : 'else'; ELSE_IF :
20 2024-04-26
编程技术问答社区
用Entity Framework和Like做动态表达
在我的项目中,我在运行时创建基于Entity Framework Core的表达式.该代码是外汇组件的一部分.我有一些基于变量类型的功能.例如,我有此功能,即可以检查一个字段是否等于值 private class IsEqualsFilter : ObjectFilter { public override bool ValueRequired => true; public override bool IsNumberAllowed => true; public override bool IsBoolAllowed => true; public override bool IsStringAllowed => true; public override bool IsDateTimeAllowed => true; public override bool IsNonNullableAllowed => true;
4 2024-04-26
编程技术问答社区
表达式树来建立子选择的结果
我正在尝试使用Expression-Trees构建子问题.在Linq中,我会写类似: var single = MyTable .AsExpandable() .Select(c => new { Childs = Enumerable.Select( MyTable.VisibleChilds.Invoke(c, dbContext), cc => Convert(cfg.ChildsConfig).Invoke(dbContext, cc)) }); Convert正在构建 之类的表达式 p => new MyTableSelect { Id = p.Id, Name = p.Name } 取决于配置的给定值(仅读取数据库所需的数据). ,但我正在为第二个参数努力传递给Select呼叫,因为我需要cc将要传递给转换式呼叫. 我想我需要Expre
4 2024-04-25
编程技术问答社区
变态。有什么办法可以在C#中原生地使用带有lambdas的引用吗?
我有一些变量,这些变量是通过ref关键字给出的.我想在lambda表达式中使用ref-Variables,而无需完全使用局部变量. 我知道C#无法合并lambdas和Ref-variables.但是,没有任何使ref-variables在lambda-expression中起作用的变态吗? 伪代码(Wannay-Be C#): T MyFunction(ref T x, ref T y) { return (Func) ( () => ( (100 * (x - y)) / x ) (); } 我想要它: 1).是通用的. 2).接受作为参数,通过参考. 3).使用两个选项使其与lambdas一起使用. 4).使用通用. 返回结果 5).成为有机编程代码:)笑话. 并致电SMTH.这样: int x = 21, y = 9; int result = MyFunction(ref x, re
40 2024-04-25
编程技术问答社区
C#中的表达式和委托
我的代码以下是伪代码. 我想使此功能可以接受表达类型,编译此表达式并使用适当的参数调用. public static void f(Expression exp, params dynamic[] d) { Console.WriteLine("begin"); exp.Compile().Invoke(d[0],d[1].....);//this is pseudo-code Console.WriteLine("end"); } 我确定T是动作类型. (t可以是Action,Action等).参数d是动态类型的数组,该数组被发送到调用. ,但我不知道如何完成代码.我敢肯定,实施它并不容易.也许在C# 中不正确 解决方案 除非您知道确切的签名,否则不能使用Invoke.但是,您可以使用DynamicInvoke,例如: ((Delegate)exp.Compile()).DynamicInvoke(d);
22 2024-04-25
编程技术问答社区
从对象中构建表达式
我有以下从ASP.NET Core中的Angular Client应用程序接收到的对象: public class ModelFromClient { public string name {get;set;} //Database field is Name public int qunatity {get;set;} //Database field is Quantity } 我有一个EF表类: [Table("MyTable")] public class MyRow { public int Id {get;set;} public string Name {get;set;} public int Qunatity {get;set;} } 现在,我需要创建从ModelFromClient到Expression>的表达式,并且需要使用通用. 没有仿制药解决方案将是: pu
8 2024-04-25
编程技术问答社区
在运行时通过可嵌套的属性名称建立OrderBy-表达式
当仅知道属性名称(甚至子专业名称)时,我如何动态构建订单表达式? 我要实现的目标是: dbResult = // some database-query as IQueryable which is not yet executed; if (!string.IsNullOrEmpty(request.OrderBy)) { // the user want's to group the results var grouped = dbResult.GroupBy(/* this should be build dynamically */); } 我需要从GroupBy开始等待Func的东西,但我只知道TKey在运行时可以是字符串,int甚至是GUID. 用户可以将" country.name"之类的东西传递给request.OrderBy属性,这意味着结果应由子专业(子选择),一个国家的名称进行分组.
2 2024-04-25
编程技术问答社区
通过迭代对象属性生成动态LINQ表达式
我正在尝试循环浏览对象中的所有属性,包括嵌套对象和集合中的对象,以生成LINQ表达式.我的课程的结构如下: public class Rule { public string label { get; set; } public string field { get; set; } public string @operator { get; set; } public string type { get; set; } public string value { get; set; } public string condition { get; set; } public List rules { get; set; } } public class QueryBuilder { public string condition { get; set; } public List r
0 2024-04-25
编程技术问答社区