Tag: linq to objects

LINQ – SkipWhile坏了吗?

我有点惊讶地发现以下代码的结果,我只想从一系列int中删除所有3: var sequence = new [] { 1, 1, 2, 3 }; var result = sequence.SkipWhile(i => i == 3); // Oh noes! Returns { 1, 1, 2, 3 } 为什么不跳过3? 我的下一个想法是,好吧,Except运算符可以解决这个问题: var sequence = new [] { 1, 1, 2, 3 }; var result = sequence.Except(i => i == 3); // Oh noes! Returns […]

C#合并2个词典

我正在开发一个面向.NET 3.5的C#应用​​程序。 在其中,我有2个类似的词典,其中包含我的应用程序中特定元素集的validation标准。 两个词典都有相同的签名。 第一个字典具有默认设置,第二个字典包含一些用户定义的设置。 var default_settings = new Dictionary(); var custom_settings = new Dictionary(); 我想将2个词典合并为一个包含两个词典元素的词典。 我遇到的问题是两个字典都可能具有一些相同的键值。 我想要的基本规则是将两个字典组合在一起,如果default_settings中已存在custom_settings中的任何键,则custom_settings值将覆盖default_settings值。 我拥有的最佳解决方案只是一个foreach循环,检查密钥是否存在于另一个字典中,如果不存在,则添加它。 foreach (var item in custom_settings) { if (default_settings.ContainsKey(item.Key)) default_settings[item.Key] = item.Value; else default_settings.Add(item.Key, item.Value); } 我已经完成了一些基本的LINQ查询,但我仍在努力学习更高级的东西。 我已经看到了一些会合并2个词典的查询,但大多数都涉及将任何元素分组为重复键,或者只返回一个只有重复键的集合/是否有一个LINQ查询或表达式,它将模仿foreach循环的行为我在用?

如何获得IEnumerable的第一个元素

是否有更好的方法来获取IEnumerable类型的第一个元素: foreach (Image image in imgList) { picture.Width = (short)image.Columns; picture.Height = (short)image.Rows; break; } 这是类型的确切声明: public class ImageList : IEnumerable, IDisposable

Linq交叉连接查询嵌套List

请帮我解决一个场景,我被困住了。 它是这样的。 使用PropertyGrid动态创建的表和字段列表(在表内)。 BindingList table = new BindingList(); [Serializable] [TypeConverter(typeof(TableConverter))] public class Table { private string _name = string.Empty; private HeaderCollection _hc = new HeaderCollection(); private BindingList _fc = new BindingList(); public Guid key; public Table() { key = Guid.NewGuid(); } [DisplayName( “Table Fields” ), Editor( typeof( FieldCollectionEditor ), typeof( UITypeEditor ) )] public BindingList […]

在Linq to Entities和Linq to Objects之间共享表达式

我试图在Linq to Entities调用和其他一些代码之间“共享”一组条件,以减少两个调用之间条件的可能不匹配。 我开始宣布我的条件: private Func _submissionDateExpiredCondition = (submissionDate, status) => submissionDate < DateTime.Now && status == Status.OK; private Func _submissionDateWithinOneWeekCondition = (submissionDate, status) => DateTime.Now < DbFunctions.AddDays(submissionDate, -7) && status == Status.Pending; private Func _bidValidityEndPeriodWithinThirtyDaysCondition = (bidValidityEndPeriod, status) => bidValidityEndPeriod.HasValue && DateTime.Now < DbFunctions.AddDays(bidValidityEndPeriod.Value, -30) && (status == Status.OK); 然后我想在我的where子句中使用这些条件,在Linq to Entities中调用和作为if语句中的函数(或者可能是Linq to Objects查询的where调用): […]

Linq嵌套列表表达式

我需要你对Linq表达的帮助: 我有嵌套的列表对象,这是主对象层次结构的样子(每个破折号是子类的属性): Folder -name -List Subfolders -name -List Documents -name -key 拥有这个对象层次结构,我有一个文档名称,我想搜索它并返回其父文件夹(子文件夹) 例: Folder -name: Customer -List Subfolders -name: Personal -List Documents -name: Resume -key : 1 如果我说:“恢复”,linq表达式应该返回我:子文件夹“Personal”(对象)。 请帮助我,因为有两个嵌套的列表我遇到了麻烦,一个很容易。 提前致谢。

使用LINQ拆分数组

我有一个像这样的单维集合: [1,2,4,5…..n] 我想在这样的二维集合中转换该集合: [[1,2,3], [4,5,6], …] 基本上我想要分组或拆分,如果你想要的话,数组是’n’个成员 我可以用foreach语句来做,但我目前正在学习LINQ,所以不是迭代遍历所有元素并手动创建一个新数组,我想使用LINQfunction(如果适用) 有没有LINQ函数来帮助我完成这个? 我想在GroupBy或SelectMany我不知道他们是否会帮助我,但他们可能会 任何帮助将真正欣赏它=):**

如何使用LINQ选择复合对象的所有后代

如何使用LINQ更好地使ComponentTraversal.GetDescendants() ? 题 public static class ComponentTraversal { public static IEnumerable GetDescendants(this Composite composite) { //How can I do this better using LINQ? IList descendants = new Component[]{}; foreach(var child in composite.Children) { descendants.Add(child); if(child is Composite) { descendants.AddRange((child as Composite).GetDescendants()); } } return descendants; } } public class Component { public string Name { […]

如何在C#中的两个列表中获得差异?

好的,所以我在C#中有两个列表 List attributes = new List(); List songs = new List(); 一个是字符串,一个是我创建的属性对象。非常简单 class Attribute { public string size { get; set; } public string link { get; set; } public string name { get; set; } public Attribute(){} public Attribute(string s, string l, string n) { size = s; link = l; name = n; […]

(ID / ParentID)列表到分层列表

MyClass包含ID ParentID和List as Children 我有这样的MyClass列表 ID ParentID 1 0 2 7 3 1 4 5 5 1 6 2 7 1 8 6 9 0 10 9 输出(分层列表)为List 1 __ 3 |__ 5__ 4 |__ 7__ 2__ 6__ 8 |__ 11 9 __10 在linq中实现这一目标的最简单方法是什么? PS: ParentID未排序 编辑: 我的尝试: class MyClass { public int ID; public […]