Tag: linq to objects

为什么ForEach Linq扩展列表而不是IEnumerable

可能重复: 为什么IEnumerable接口上没有ForEach扩展方法? 你好, 我的问题是为什么Foreach扩展方法是在List而不是IEnumreable上定义的。 我已经阅读了Eric Lippert的文章,但重点是,如果有这样的方法比为什么它的列表那么糟糕?

在Linq处理临时计算

在解决面试问题时 问题 当乘以2到9之间的整数时,需要以这种方式找到一个六位数字,当数字反转时给出原始的六位数字。 例: 假设我乘以219978 * 4我得到879912,当反向879912我将得到219978回来。 我用它解决了 for (long l = 100000; l < 999999; l++) { var num = l.ToString(); for (int i = 3; i < 9; i++) { var mul = l * i; string str = mul.ToString(); char[] splitDigits = str.ToCharArray(); string reversedDigit = new string(splitDigits.Reverse().ToArray()); if (reversedDigit.CompareTo(num) == 0) […]

LINQ to Entities / LINQ to SQL:在查询理解过程中从服务器(可查询)切换到客户端(可枚举)?

在许多情况下,我想在服务器端进行一些过滤(有时是投影),然后切换到客户端,以获取LINQ提供程序本身不支持的操作。 天真的方法(基本上就是我现在所做的)就是把它分解成多个查询,类似于: var fromServer = from t in context.Table where t.Col1 = 123 where t.Col2 = “blah” select t; var clientSide = from t in fromServer.AsEnumerable() where t.Col3.Split(‘/’).Last() == “whatever” select t.Col4; 然而,有很多次这是更多的代码/麻烦,而不是真正的价值。 我真的很想在中间做一个“切换到客户端”。 我已经尝试了各种使用查询延续的方法,但是在第一个查询结束时执行’select t into foo’之后,foo仍然是一个单独的项目,而不是集合,所以我不能AsEnumerable()它。 我的目标是能够写出更像: var results = from t in context.Table where t.Col1 = 123 where t.Col2 = “blah” // […]

什么是“现代”的方式来找到两个列表对象中的常见项目?

我有两个包含不同类型的通用列表,例如,我们称之为Products和Employees 。 我正在尝试找到与Employees位于同一位置的product.SiteId == emp.SiteId ,即product.SiteId == emp.SiteId List lstProds; List lstEmps; 我的(老skool)大脑告诉我使用forEach循环找到匹配但我怀疑有一个(’更好’/更快/更快?)的方式来使用Linq。 任何人都可以照亮我吗? 我在网上找到的所有例子都涉及原语列表(字符串/整数),并没有特别的帮助。

使用LINQ对对象列表进行分组

我有一个对象: public class Customer { public int ID { get; set; } public string Name { get; set; } public int GroupID { get; set; } } 我返回一个可能如下所示的列表: List CustomerList = new List(); CustomerList.Add( new Customer { ID = 1, Name = “One”, GroupID = 1 } ); CustomerList.Add( new Customer { ID = 2, […]

使用LINQ to Objects查找一个集合中与另一个集合不匹配的项目

我想在一个集合中找到与另一个集合不匹配的所有项目。 但是,这些集合的类型不同; 我想写一个lambda表达式来指定相等性。 一个LINQPad我正在尝试做的例子: void Main() { var employees = new[] { new Employee { Id = 20, Name = “Bob” }, new Employee { Id = 10, Name = “Bill” }, new Employee { Id = 30, Name = “Frank” } }; var managers = new[] { new Manager { EmployeeId = 20 }, […]

优化字符串连接的聚合

更新 – 对于那些具有诙谐心态的人来说,你可以假设,无论函数传递给它,Aggregate仍会产生正常结果,包括在优化的情况下。 我编写了这个程序来构建一个从0到19999的长整数字符串,用逗号分隔。 using System; using System.Linq; using System.Diagnostics; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { const int size = 20000; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Enumerable.Range(0, size).Select(n => n.ToString()).Aggregate((a, b) => a + “, ” + b); stopwatch.Stop(); Console.WriteLine(stopwatch.ElapsedMilliseconds + “ms”); } } } 当我运行它时,它说: 5116ms 超过五秒钟,太可怕了。 当然这是因为每次循环都会复制整个字符串。 […]

如何使用linq查询LIST

假设我将人类实例添加到列表然后我需要使用linq查询列表。 List lst=new List(); lst.add(new person{ID=1,Name=”jhon”,salaty=2500}); lst.add(new person{ID=2,Name=”Sena”,salaty=1500}); lst.add(new person{ID=3,Name=”Max”,salaty=5500}); lst.add(new person{ID=4,Name=”Gen”,salaty=3500}); 现在我想用linq查询上面的列表。 请指导我的示例代码。

SqlException,因为Subquery返回的值超过1

我有以下LINQ查询,我用来构建一个结构到一个JavaScript网格库,这与这个例子无关,但我想我仍然会解释。 var output = myObjects.Select( p => new RowModel { ID = p.LeadUID, Cells = new CellCollection(fields, p.myDataDatas.Where(q => q.myField.ParentUID == null).Select( q => new CellModel { Value = q.Value, Name = q.myField.Description, Display = q.myField.Description }).ToList() , new CellModel { Name = “Campaign”, Display = “Campaign”, Value = p.Campaign.Name } , new CellModel { […]

LINQ查询重用和延迟执行

我的印象是我可以创建一个LINQ查询,然后在更改所涉及的参数时重复使用它。 但似乎你无法改变源集合。 有人可以给我一个很好的解释,为什么,因为我明显误解了一些基本的东西。 这是一些示例代码。 var source = Enumerable.Range(1, 10); var value = source.Where(x => x > 5); var first = value.ToArray(); source = Enumerable.Range(11, 20); var second = value.ToArray(); 我期待第一个是6,7,8,9,10,第二个是11到20。