Tag: dynamic linq

动态LINQ:在新子句中指定类名

使用Dynamic LINQ,需要对给定类的字段进行哪些更改? 例如,如何在DLinq中重现以下C#查询: var carsPartial = cars.Select(c => new {c.year, c.name, make = new maker() {name = c.make.name} }).ToList(); 我已应用此答案https://stackoverflow.com/a/1468357/288747中提到的更改,以允许返回类型为调用类型而不是匿名类型。 类定义如下(如果有帮助): class car { public int vid; public int odo; public int year; public string name; public maker make; } class maker { public string name; public int firstYear; } 以下不起作用(但我认为很接近,但仍然不起作用,因为我没有动态linq库所需的更改,这是我需要的): var carsPartial = cars.Select(“new(name, […]

C#LINQ – 如何动态构建Group By子句

我正在处理应用程序,用户可以在其中选择他/她想要在屏幕上看到的列以及要分组或聚合的列。 因此,在我的LINQ部分中,我实际上应该将包含列名的变量传递给group by和aggregate子句。 请记住, DataTable dt每次都可能包含不同的数据(例如员工信息,采购订单,性能统计等)。 我只能通过dt.Columns[i].ColumnName和dt.Columns[i].DataType.Name在运行时获取有关数据的信息。 任何人都可以建议如何做到这一点,我需要的是这样的事情: SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); var query = from row in dt.AsEnumerable() group row by new { foreach(DataColumn column in dt.Columns) { row[column.ColumnName]; } } into grp select new { foreach(DataColumn column in dt.Columns) { if(column.DataType.Name == “Decimal”) { Sum(grp[column.ColumnName]); }else{ […]

C#DynamicLinq where子句与Any()

我想运行动态linq与字符串where子句如下: query = db.Customers.Where(“Categories.Any(Code == ‘Retail’)”); 客户实体具有类别集合 class Customer { public List Categories {get;set;} … } class Category { public Guid Id {get;set;} public string Code {get;set;} } 任何人都可以告诉我有可能做这样的事情吗? PS:我需要where子句是字符串。 where子句将在运行时生成,因此我无法使用Linq查询表达式。 我正在使用Telerik DataAccess。

动态LINQ日期时间比较字符串构建 – Linq To实体

我正在使用Scott Guthrie的动态LINQ库以及Entity Framework和C#。 我必须根据几个因素将where字符串构建到变量中,然后将字符串变量传递给where子句。 出于某种原因,这将有效: ContactList = ContactList.Where(“DateAdded >= @0”, DateTime.Parse(“12/1/2012”)); 但这不起作用 string WhereClause = string.Format(“DateAdded >= {0}”, DateTime.Parse(“12/1/2012”)); ContactList = ContactList.Where(WhereClause); 如上所述,我需要在传递变量的版本中使用它。 谁知道为什么第二个不起作用? 提前致谢!

如何在c#/ Linq中获取确定列名的值?

我想知道是否有可能获得明确的列名称的值? 例如, SELECT NAME FROM PERSON; string NAME; a… == NAME); 问题是列名称可能会更改,它并不总是“NAME”列。 因此,我需要一个解决方案,我可以动态地将列名称传递给查询。

如何在Dynamic Linq中使用Enums?

我想在动态LINQ查询中使用枚举。 是否可能,如果,如何? 考虑下面的代码: using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Room aRoom = new Room() { Name = “a Room” }; Room bRoom = new Room() { Name = “b Room” }; Room cRoom = new Room() { Name = “c Room” }; […]

使用Dyanmic字段名称使用LINQ查询实体

我在ASP.NET MVC中创建了一个动态搜索屏幕。 我通过reflection从实体中检索了字段名称,这样我就可以允许用户选择要搜索的字段而不是显示视图中的所有字段。 当搜索结果回发到控制器时,我收到一个包含FieldName和Value的FormCollection。 我不知道搜索了多少字段,FormCollection只包含用户选择的字段。 我希望能够现在获取该字段名称,并在我查询数据库时将其应用于我的LINQ语句,例如: public List SearchPeople(Dictionary fieldValueDictionary) { List searchResults = new List(); foreach (string key in fieldValueDictionary.Keys) { searchResults.Add(entities.People.Where(p => p. == fieldValueDictionary[key])); } return searchResults; } 我在“使用键字符串作为fieldName”的地方就像p => p.FirstName == fieldValueDictionary [key]其中key =“FirstName”。 我尝试过但未能使用Lambda表树,并且在动态LINQ方面取得了一些成功。 唯一的另一种选择是做类似的事情: public List SearchPeople(Dictionary fieldValueDictionary) { IQueryable results = entities.People; foreach (string key in fieldValueDictionary.Keys) { […]

entity framework+ DayOfWeek

使用System.Linq.Dynamic (在这里管理https://github.com/kahanu/System.Linq.Dynamic ),我试图捕获在DateTime上找到的DayOfWeek字段,以便使用Entity Framework 6(或更高版本)进行聚合。 以前要求类似的东西,这有很大帮助, 动态Linq +entity framework:动态选择的日期时间修改 entity framework支持使用the获取DayOfWeek SqlFunctions.DatePart(“dw”, datetime?) 或者我们可以用类似的东西做一些更需要的东西 DbFunctions.DiffDays(date?, date?). 理念: 让Linq的DayOfWeek成为实体 我发现这非常有趣,我喜欢它,因为它不使用可能让我局限于SQL Server的SqlFunctions 。 此外,开发人员可以控制一周的第一天,而无需查询SQL Server属性以查找其配置方式(第一天)。 出于实验目的,我一直在尝试在VisitMember()覆盖中实现它: protected override Expression VisitMember(MemberExpression node) { if (node.Type == typeof(System.DayOfWeek)) { var firstSunday = new DateTime(1753, 1, 7); var firstSundayExpression = Expression.Constant(firstSunday, typeof(DateTime?)); var timeValue = node.Expression; if (timeValue.Type != typeof(DateTime?)) […]

如何使用Dynamic LINQ使用GroupBy

我正在尝试使用动态LINQ进行GroupBy,但无法使其工作。 这是一些说明问题的示例代码: List listAlbums = new List(); for (int i = 0; i < 5000; i++) { dtoMyAlbum album = new dtoMyAlbum { Author = "My Author", BookID = i, CurrSymbol = "USD", Price = 23.23, Shop = i % 3 == 0 ? "TESCO" : "HMV" }; listAlbums.Add(album); } IQueryable mydata = listAlbums.AsQueryable(); int […]

动态LINQ GroupBy多列

我需要将以下LINQ查询转换为动态LINQ,它根据用户输入接受多个分组列。 基本上我有一堆应用分组的下拉列表,我不想枚举每个分组组合。 如果动态LINQ失败,我可能必须手动构建SQL查询,没有人想要它。 var grouping = ( from entry in ObjectContext.OmniturePageModules where entry.StartOfWeek >= startDate && entry.StartOfWeek p.Clicks ) } ); 我不知道如何做到这一点,因为动态LINQ在“hello world”之外完全没有文档记录! 选择/ where / orderby案例。 我只是无法弄清楚语法。 就像是:(?) var grouping = ObjectContext.OmniturePageModules.Where(entry => entry.StartOfWeek >= startDate && entry.StartOfWeek <= endDate && ( section == "Total" || section == "All" || entry.Section == section ) […]