Tag: linq

我可以在linq中使用join with let – c#

let order= _relationContext.Orders .Where(x => x.OrderNumber == orderNo) .Select(x => new { x.OrderNo, x.OrderDate }).Single() 我想尝试做这样的事情 let order = _relationContext.Orders join _relationContext.Products .Where(x => x.OrderNumber == orderNo && x.ProductId == Products.ProductID) .Select(x => new { x.OrderNo, x.OrderDate }).Single() 这有可能吗? 更新1:我目前的代码 var q = from c in sXDocument.Descendants(“prop”) let handle = c.Element(“handle”) let resultref = handle […]

IEqualityComparer和singleton

我想知道是否有可能使用singleton作为comparerObject,例如Distinct ?? 假设我有一个元素列表,我需要在该列表中使用不同的函数。 通常我会这样做 var result = list.Distinct(new ListElementComparer); ListElementComparer是一个实现IEqualityComparer接口的类。 但是,让我们假设我将经常使用上面提到的代码,例如那样。 List<List> elementList = new List<List>(); List<List> resultList new List<List>(); foreach(var element in elementList ) resultList.AddRange(element.Distinct(new ListElementComparer() ) ); 因此,您可以创建很多次ListElementComparer的对象。 在这种情况下,在每次迭代中使用单一内容创建ListElementComparer是否有任何意义? 如果我使用单身人士,那么独特的方法会有效吗?

Linq查询返回过滤后的数据

我有以下数据结构(事先道歉,因为我不确定在SO中表示数据结构的最佳方式)。 以下是链接的表格列表(由一对多表示 1 | 8 关系。 ——————— |GlobalListTable: | |——————-| |Id | |ProductGroupTableId| |ProductListTypeId | ——————— 8 | 1 ——————— |ProductGroupTable: | |——————-| |Id | |Name | ——————— 1 | 8 ——————— |ProductTable: | |——————-| |Id | |Name | |ProductGroupTableId| ——————— 1 | 8 ——————— |ComponentTable: | |——————-| |Id | |Name | |ProductTableId | |ComponentTypeId […]

LINQ将行的列值分隔为.net中的不同行

考虑我有一个从oracle数据库中检索的数据表,格式如下 SNo. | Product | Cost ————————————————- 1 | colgate,closeup,pepsodent | 50 2 | rin,surf | 100 我需要使用linq.Need将其更改为以下格式,以通过保持其他列相同来使用逗号分隔产品列。 SNo. | Product | Cost ————————————- 1 | colgate | 50 1 | closeup | 50 1 | pepsodent | 50 2 | rin | 100 2 | surf | 100

LINQ Except()方法不起作用

我有2个IList相同类型的对象ItemsDTO 。 我想从另一个列表中排除一个列表。 然而,这对我来说似乎没有用,我想知道为什么? IList related = itemsbl.GetRelatedItems(); IList relating = itemsbl.GetRelatingItems().Except(related).ToList(); 我正在尝试从relating列表中删除related项目。

优雅的方式来计算字符串中的字母数字字符?

我正在寻找一种优雅的方式,最好是一个简短的linq表达式来计算给定字符串包含多少个字母数字字符。 我现在这样做的“无聊”方式是这样的: int num = 0; for (int i = 0; i < password.Length; i++) { if (!char.IsLetterOrDigit(password, i)) { num++; } } if (num < MinRequiredNonAlphanumericCharacters) return false; 这已经相当短了,但我确信有一些linq魔法,这可以用更短,同样可以理解的表达来完成,对吧?

使用LINQ选择当前周

如何编写where语句,在给定日期的Sunday到Saturday之间选择带有Date字段的记录。 Data Fields: Id, Name, Date

dbcontext和objectcontext中的NULL处理

我有这个简单的LINQ查询 from e in Employees where e.DesignationID !=558 select e 这里的DesignationID是一个可以为空的字段: 在objectcontext ,查询被转换为: SELECT [Extent1].[EmployeeID] AS [EmployeeID], [Extent1].[EmployeeCode] AS [EmployeeCode], [Extent1].[EmployeeName] AS [EmployeeName], [Extent1].[DesignationID] AS [DesignationID] FROM [dbo].[setupEmployees] AS [Extent1] WHERE 558 [Extent1].[DesignationID] 虽然dbcontext的相同查询被翻译为: SELECT [Extent1].[EmployeeID] AS [EmployeeID], [Extent1].[EmployeeCode] AS [EmployeeCode], [Extent1].[EmployeeName] AS [EmployeeName], [Extent1].[DesignationID] AS [DesignationID] FROM [dbo].[setupEmployees] AS [Extent1] WHERE NOT ((558 = […]

LINQ:按聚合分组但仍然从最近一行获取信息?

假设我有一张包含运输历史的表格。 我想编写一个查询来计算每个用户的发货量,并从该表中该用户的最新条目中获取发货名称。 表结构简单:ShipmentID MemberID ShippingName ShippingDate 如何编写LINQ C#查询来执行此操作?

动态LINQ表达式中的空引用exception

我正在使用Microsoft的Dynamic Linq Library / Sample在列表上进行排序。 例如,我有以下C#代码: myGrid.DataSource=repository.GetWidgetList() .OrderBy(sortField + ” ” + sortDirection).ToList(); 我有一个案例,我的对象与另一个对象有0:1的关系,它有一个可能在网格中显示的属性。 当我们尝试对它进行排序时,只要我的所有小部件都有这个孩子,它就能正常工作。 我们按Child.Name排序。 但是当Child为null时,我们得到null引用exception。 我在这里有一些选项,我知道我可以选择一个匿名类型并绑定到那个,我也可以在父对象上公开Child.Name并通过代码处理它(我不喜欢包含我的对象模型) )。 在一个理想的世界里,我想更新库来处理这种情况。 在我深入研究它之前,我想知道是否有人遇到过这个问题并且已经有解决方案了吗? 编辑 看起来我说得不够好。 我使用的是带有C#样本的Dynamic Linq库 。 这个库添加了一些很好的扩展,让你在lambda表达式中使用字符串所以我的代码实际上是这样的: private void BindGrid(sortField,sortDirection) { this.grid.DataSource=….OrderBy(“MyField ASC”)…. } 当然,那里的字符串被参数替换。 但这允许我们在用户点击网格标题时动态更改排序。 我们没有必要的其他逻辑来处理所有的排列。 我记录下来的解决方案将我的干净方法改为: private void BindGrid() { var sortField=this._sortField; if (sortField==”Child.Name”) { sortField=”iif(Child==null,null,Child.Name)”; } this.grid.DataSource=repository.GetWidgetList() .OrderBy(sortField + ” ” + […]