Tag: linq

检查是否存在与LINQ的FirstOrDefault KeyValuePair

我有一个types的字典 Dictionary<Guid,int> 我想返回一个条件满足使用的第一个实例 var available = m_AvailableDict.FirstOrDefault(p => p.Value == 0) 但是,如何检查我是否真的找回KeyValuePair? 我似乎无法使用!=或==检查与默认(KeyValuePair)没有编译器错误。 这里有一个类似的线程,似乎没有一个解决scheme。 我实际上能够通过获取关键字和检查Guid的默认值来解决我的特定问题,但是我很好奇是否有一个用keyvaluepair做这个的好方法。 谢谢

Linq空值查询

from i in Db.Items select new VotedItem { ItemId = i.ItemId, Points = (from v in Db.Votes where b.ItemId == v.ItemId select v.Points).Sum() } 我得到了这个查询,但是如果没有发现有exception的投票则失败: The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type. 我假设它是因为sum返回一个int而不是一个可为空的int,给出一个int? 作为input只给出相同的错误,可能导致总和只在整数工作。 任何好的解决方法呢?

在MatchCollection上使用Linq扩展方法语法

我有以下代码: MatchCollection matches = myRegEx.Matches(content); bool result = (from Match m in matches where m.Groups["name"].Value.Length > 128 select m).Any(); 有没有办法使用Linq扩展方法语法来做到这一点? 像这样的东西 bool result = matches.Any(x => … );

如何更新多行使用LINQ到SQL?

表: id userid friendid name status 1 1 2 venkat false 2 1 3 sai true 3 1 4 arun false 4 1 5 arjun false 如果用户发送userid = 1,那么friendids = 2,4,5 status = true 请告诉我如何更新以上所有friendids状态的查询是真实的。 [2,3,4一次]。 谢谢

LINQ使用Max()来select一行

我在从NHibernate返回的IQueryable上使用LINQ,我需要在几个字段中select具有最大值的行。 我简化了我坚持的一点。 我需要从我的表中select一个字段中的最大值的一行。 var table = new Table { new Row(id: 1, status: 10), new Row(id: 2, status: 20) } from u in table group u by 1 into g where u.Status == g.Max(u => u.Status) select u 这是不正确的,但我不能找出正确的forms。 顺便说一下,我实际上试图达到的是这样的: var clientAddress = this.repository.GetAll() .GroupBy(a => a) .SelectMany( g => g.Where( a => a.Reference == […]

什么是expression树,你如何使用它们,为什么要使用它们?

我刚刚遇到了多次听到的expression树的概念。 我只是想了解一个expression树和它的目的是什么意思。 如果有人能指导我简单的解释和使用的样本,我会喜欢它。

我应该在我的LINQ查询中使用两个“where”子句或“&&”?

当写一个LINQ查询有多个“和”条件时,我应该写一个where子句包含&&或多个where子句,每个条件一个? static void Main(string[] args) { var ints = new List<int>(Enumerable.Range(-10, 20)); var positiveEvensA = from i in ints where (i > 0) && ((i % 2) == 0) select i; var positiveEvensB = from i in ints where i > 0 where (i % 2) == 0 select i; System.Diagnostics.Debug.Assert(positiveEvensA.Count() == positiveEvensB.Count()); } positiveEvensA和positiveEvensB之间除个人偏好或编码风格(长行,可读性等)之外是否有任何不同? […]

我需要考虑处置任何IEnumerable <T>我使用?

最近有人向我指出,各种Linq扩展方法(如Where , Select等)都返回一个IEnumerable<T> ,也恰好是IDisposable 。 以下评估为True new int[2] {0,1}.Select(x => x*2) is IDisposable 我是否需要处理Whereexpression式的结果? 每当我调用一个方法返回IEnumerable<T> ,我(可能)接受负责调用处理,当我完成了它?

为什么这个方法会导致无限循环?

我的一个同事向我提出了一个关于这个方法的问题,导致了一个无限循环。 实际的代码有点太过牵扯到这里,但基本上这个问题归结为: private IEnumerable<int> GoNuts(IEnumerable<int> items) { items = items.Select(item => items.First(i => i == item)); return items; } 这应该 (你会认为)是一个非常低效的方式来创build一个列表的副本。 我把它叫做: var foo = GoNuts(new[]{1,2,3,4,5,6}); 结果是一个无限循环。 奇怪。 我认为修改参数在风格上是一件坏事,所以我稍微改变了代码: var foo = items.Select(item => items.First(i => i == item)); return foo; 这工作。 就是这个程序完成了, 没有例外。 更多的实验表明,这也是有效的: items = items.Select(item => items.First(i => i == item)).ToList(); return […]

在LINQ中升序/降序 – 可以通过参数更改顺序吗?

我有一个方法是给出参数“布尔sortAscending”。 现在我想用LINQ根据这个参数创buildsorting列表。 我那时是这样的: var ascendingQuery = from data in dataList orderby data.Property ascending select data; var descendingQuery = from data in dataList orderby data.Property descending select data; 正如你所看到的,这两个查询只有在“升序”和resp。 “降”。 我想合并这两个查询,但我不知道如何。 有没有人有答案?