Tag: linq

IEnumerable的默认具体类型是什么

(对不起,标题模糊;没想到更好。请随意改写。) 所以假设我的函数或属性返回一个IEnumerable : public IEnumerable Adults { get { return _Members.Where(i => i.Age >= 18); } } 如果我在这个属性上运行foreach而没有实际实现返回的可枚举: foreach(var Adult in Adults) { //… } 是否存在一个规则来控制IEnumerable是否将实现为数组或列表或其他内容? 将Adults为List或Array而不调用ToList()或ToArray()吗? 编辑 许多人花了很多精力回答这个问题。 感谢他们所有人。 然而,这个问题的要点仍然没有答案。 让我详细介绍一下: 我知道foreach不要求目标对象是数组或列表。 它甚至不需要是任何类型的集合。 它需要的目标对象就是实现枚举。 但是,如果我检查目标对象的值,它会显示实际的底层对象是List (就像它在检查一个盒装的字符串对象时显示object (string) )。 这就是混乱开始的地方。 谁进行了这种实现? 我检查了底层( Where()函数的源),看起来这些函数看起来并不像这样。 所以我的问题在于两个层面。 第一个是纯粹的理论。 与物理学和生物学等许多其他学科不同,在计算机科学中,我们总是清楚地知道某些东西是如何起作用的(回答@zzxyz的最后评论); 所以我试图挖掘创建List的代理以及它如何决定它应该选择List而不是Array以及是否有一种方法可以从我们的代码中影响该决策。 我的第二个原因是实际的。 我可以依赖实际底层对象的类型并将其强制转换为List吗? 我需要使用一些Listfunction,我想知道是否例如((List)Adults).BinarySearch()和Adults.ToList().BinarySearch()一样安全Adults.ToList().BinarySearch() ? 我也明白即使我明确地调用ToList()也不会造成任何性能损失。 我只是想了解它是如何工作的。 无论如何,再次感谢时间; 我想我花了太多时间。

LINQ使用C#将少数列交换到DataTable的行

我有数据表: location Quarter ppl_required ppl_available BLR Q1 70 35 BLR Q2 50 45 BLR Q3 25 28 BLR Q4 60 58 CHN Q1 77 92 CHN Q2 42 66 CHN Q3 29 20 CHN Q4 22 24 有没有更好的方法可以使用LINQ或LINQ高级function(使用.NET3.5 / 4.0 / 4.5框架)以非常简单或简短的方式[ 无循环 ]将以下DataTable作为输出。 Location ppl_Required_Q1 ppl_Required_Q2 ppl_Required_Q3 ppl_Required_Q4 ppl_available_Q1 ppl_available_Q2 ppl_available_Q3 ppl_available_Q4 BLR 70 […]

c#/ Linq总和在哪里

我有一个表NCR包含格式的数据: ID | Date | Item | Type | Qty 1 | 01/01/13 | Apple | A | 1 2 | 01/01/13 | Apple | B | 1 3 | 01/01/13 | Orange | C | 1 4 | 01/01/13 | Orange | A | 2 6 | 01/01/13 | Orange | C | 1 […]

用于从配置文件创建数组的可扩展C#代码

我有配置值,如下所示 add key=”Screen1″ value =”Admin” add key=”Screen2″ value =”Log” 将来会增加新的屏幕。 在C#中,我需要创建一个包含这些屏幕名称的字符串数组。 我们怎么做呢(请记住,即使我们添加新屏幕,代码也需要工作)? 注1:我正在寻找一种不使用自定义配置的方法。 注2:我最多有10个配置项,名称以“Screen”开头。 但我会有10,000个其他配置项。 参考 用于检查价值存在的更好的代码/模式 读取配置节的通用方法 在C#中生成数字列表 检测给定列表中至少3个序列号的序列 LINQ是否缓存计算值? 有一种简单的方法可以在C#中组合两个相对路径吗?

与LINQ相比,为什么Array.Sort()这么慢?

我做了快速测试应用程序,将LINQ排序与我的自定义对象上的Array.Sort进行比较。 Array.Sort似乎非常慢! 我创建了这样的自定义类: class Person : IComparable { public int Age { get; set; } public string Name { get; set; } public int CompareTo(Person obj) { return this.Age.CompareTo(obj.Age); } public Person() { } } 然后我在main()中做了我的测试人员: string name = “Mr. Tomek”; Random r = new Random(); int size = 10000000; DateTime start, end; Person[] people1 […]

linq group by:良好的语法但奇怪的输出

我的查询的语法很好但不是输出,这真的很奇怪。 我有下表: | AppointID | UserID | AppointSet | AppointAttended | AppointCancelled | AppointRescheduled | AppointmentDatetime | 1 | 1 | 2/15/2011 | | 3/11/2011 | | 3/15/2011 | 2 | 1 | 2/17/2011 | | | 3/11/2011 | 3/10/2011 | 3 | 1 | 3/11/2011 | 3/11/2011 | | | 3/25/2011 | 4 | […]

在inheritance的数组LINQ中添加元素

关注上一个问题,这是我的一般类结构.. LINQ基于类型和Summate它们的值组合列表中的元素 我试图使用各自的.Add方法组合项目,但由于entity framework的考虑,我只能处理基类型(非接口)。 using System.Linq; using System.Collections.Generic; interface Item { T Add(T item); } abstract class Item { public ItemType Type; public int Value; } class SubItemOne : Item, Item { public int Additional { get; set; } public SubItemOne Add(SubItemOne item) { // .. } } class SubItemTwo : Item, Item { public […]

LINQ中的多个.Where()语句是否存在性能问题?

我想知道多个.Where()语句是否存在性能影响。 例如,我可以写: var contracts = Context.Contract .Where( c1 => c1.EmployeeId == employeeId ) .Where( c1 => !Context.Contract.Any( c2 => c2.EmployeeId == employeeId && c1.StoreId == c2.StoreId && SqlFunctions.DateDiff(“day”, c2.TerminationDate.Value, c1.DateOfHire.Value) == 1 ) ) .Where( c1 => !Context.EmployeeTask.Any( t => t.ContractId == c1.Id ) ); 或者我可以将它们全部组合到一个Where()子句中,如下所示: var contracts = Context.Contract .Where( c1 => c1.EmployeeId == […]

将var转换为c#中的List

我无法将var转换为List 。 private void PopulateChart(List rawData) { var groupedByCategory1 = rawData.GroupBy(co => co.Category1) //List data = groupedByCategory1.GroupBy(co => co.Category1).ToList(); } 注意:从rawData我必须得到Groupby数据。 再次使用该结果我必须对数据进行分组。

我可以使用System.Linq.Expressions动态生成异步方法吗?

我知道编译器无法将异步lambda表达式转换为表达式树,但是可以手动生成表达式树吗? var expr = Expression.Lambda<Func>( // how do I use ‘await’ in the body here? ); var func = expr.Compile(); 我在Expression类中找不到与async或await相关的任何方法,但也许还有另一种方法?