Tag: linq

使用LINQ在一行代码中将string转换为int

我有一个stringforms的整数数组: var arr = new string[] { "1", "2", "3", "4" }; 我需要一个“真正的”整数数组来推动它: void Foo(int[] arr) { .. } 我试图投入int,它当然是失败的: Foo(arr.Cast<int>.ToArray()); 我可以做下一个: var list = new List<int>(arr.Length); arr.ForEach(i => list.Add(Int32.Parse(i))); // maybe Convert.ToInt32() is better? Foo(list.ToArray()); 要么 var list = new List<int>(arr.Length); arr.ForEach(i => { int j; if (Int32.TryParse(i, out j)) // TryParse is faster, […]

LINQ语句比“foreach”循环更快吗?

我正在编写一个Mesh渲染pipe理器,并认为将所有使用相同着色器的网格进行分组,然后在我处于该着色器渲染阶段时渲染这些网格将是一个好主意。 我目前正在使用一个foreach循环,但想知道如果使用LINQ可能会使我的性能提高?

多个列表与IEnumerable.Intersect()交集

我有一个列表,我想find这样的路口: var list1 = new List<int>() { 1, 2, 3 }; var list2 = new List<int>() { 2, 3, 4 }; var list3 = new List<int>() { 3, 4, 5 }; var listOfLists = new List<List<int>>() { list1, list2, list3 }; // expected intersection is List<int>() { 3 }; 有没有办法用IEnumerable.Intersect()做到这一点? 编辑:我应该更清楚这一点:我真的有一个列表的清单,我不知道会有多less,上面的三个列表只是一个例子,我所拥有的实际上是一个IEnumerable<IEnumerable<SomeClass>> 解 感谢所有伟大的答案。 原来有四个选项可以解决这个问题: List […]

C#LINQ在List中查找重复项

使用LINQ,从一个List<int> ,我如何检索一个包含多次重复的条目和它们的值的列表?

LINQ在.NET 2.0运行时

启用了LINQ的应用程序是否可以在仅安装了.NET 2.0运行时的计算机上运行? 从理论上讲,LINQ只不过是语法糖,所得到的IL代码看起来应该和.NET 2.0一样。 我如何编写LINQ而不使用.NET 3.5库? 它会在.NET 2.0上运行吗?

最佳的LINQ查询来获得一个随机的子集合 – 随机播放

请build议一个最简单的方法,从具有“N”个项目的集合中随机抽取“n”个数。 其中n <= N

在LINQ查询中调用ToList()或ToArray()会更好吗?

我经常遇到这样的情况,我想在我声明的位置上对查询进行评估。 这通常是因为我需要迭代多次,计算起来很昂贵。 例如: string raw = "…"; var lines = (from l in raw.Split('\n') let ll = l.Trim() where !string.IsNullOrEmpty(ll) select ll).ToList(); 这工作正常。 但是,如果我不打算修改结果,那么我不如调用ToArray()而不是ToList() 。 然而,我不知道是否ToArray()是通过首先调用ToList()来实现的,因此与调用ToList()相比内存效率更低。 我疯了吗? 我应该只是调用ToArray() – 安全和安全的知识,内存不会被分配两次?

在LINQ中推迟执行有什么好处?

LINQ使用延迟执行模型,这意味着在调用Linq运算符时不会返回结果序列,而是这些运算符返回一个对象,只有当我们枚举这个对象时才产生一个序列的元素。 虽然我明白延迟查询是如何工作的,但我在理解延迟执行的好处方面遇到了一些麻烦: 1)我读过延迟查询执行只有当你真的需要的结果可以是很大的好处。 那么这有什么好处? 2)延迟查询的其他优点是,如果您定义了一次查询,那么每次枚举结果时,如果数据发生更改,您将得到不同的结果。 a)但是从下面的代码可以看出,即使不使用延迟查询,我们也可以达到相同的效果(因此,每次枚举资源时,如果数据发生更改,我们都会得到不同的结果): List<string> sList = new List<string>( new[]{ "A","B" }); foreach (string item in sList) Console.WriteLine(item); // Q1 outputs AB sList.Add("C"); foreach (string item in sList) Console.WriteLine(item); // Q2 outputs ABC 3)延期执行还有其他好处吗?

Linq to Entitiesjoinvs groupjoin

我有networkingsearch,但我仍然无法find一个简单的答案。 有人可以解释一下(用简单的英语)一个GroupJoin是什么? 与普通的内部Join有什么不同? 常用吗? 仅仅是方法的语法? 怎么样的查询语法? 一个C#代码的例子会很好。

如何在单个连接中的多个字段LINQ中join

我需要做一个LINQ2DataSet查询,在一个以上的领域(如 var result = from x in entity join y in entity2 on x.field1 = y.field1 and x.field2 = y.field2 我还没有find一个合适的解决scheme(我可以将额外的约束添加到where子句,但是这远远不是一个合适的解决scheme,或者使用这个解决scheme,但假设是一个equijoin)。 是否有可能在一个连接的多个领域joinLINQ的LINQ? 编辑 var result = from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 } 是我引用上面假设一个equijoin的解决scheme。 进一步编辑 为了回答我原来的例子是一个equijoin的批评,我确实承认,我目前的要求是为了一个equijoin,而且我已经使用了上面提到的解决scheme。 然而,我正在试图了解我有什么可能性和最佳实践,应该使用LINQ。 我将需要做一个date范围查询连接与表ID很快,只是先发制人的问题,看来我必须在where子句中添加date范围。 感谢一如既往的所有build议和意见