Tag: 集合

C#集合总是强制执行订单吗?

IE如果我想从数组中选择,生成的IEnumerable对象是否必然按顺序排列? public class Student { public string FullName, … } public class School { public string Name, public Student[] Students, … } public void StudentListWork(School thisSchool) { IEnumerable StudentNames = thisSchool.Students.Select(student => student.FullName); // IS StudentNames GUARANTEED TO BE IN THE SAME ORDER AS thisSchool.Students? } 谢谢!

两个集合中的任何交集

我必须找出两个集合是否有任何交集,我这样做的方式是使用LINQ的“Join”来获取两个集合的交集,然后我使用“Any”。 但我想知道,还有其他更“优雅”的做法吗?

将C#集合拆分为相等的部分,保持排序

我正在尝试将一个集合拆分成多个集合,同时保持我对集合的排序。 我尝试使用以下扩展方法,但它错误地打破了它们。 基本上,如果我要查看集合中的项目,与加入的分解集合相比,顺序应该相同。 这是我使用的代码不起作用: public static IEnumerable<IEnumerable> Split(this IEnumerable list, int parts) { int i = 0; var splits = from name in list group name by i++ % parts into part select part.AsEnumerable(); return splits; } int parts =子枚举数

LINQ:查询集合是否包含另一个集合中的任何元素

所以很明显这对于几个foreach循环来说很容易实现,但是我在几年的Java之后才开始使用C#而现在我正在尝试将LINQ填入所有内容,因为它非常棒。 我有两个ICollections字符串,我想检查一个集合是否包含另一个集合中的任何字符串。 换句话说,我想检查两个集合的并集是否为空。 在这种情况下,我实际上并不关心WHICH字符串匹配,只是匹配是否存在。 我假设Any是这里的关键方法,但我无法弄清楚如何用它做我想做的事。 我确信解决方案非常简单; 我对构建查询并不是很熟悉。

快速检查IEnumerable 是否包含重复项(= is distinct)的方法

是否有快速内置方法来检查IEnumerable只包含不同的字符串? 一开始我开始: var enumAsArray = enum.ToArray(); if (enumAsArray.Length != enumAsArray.Distinct().Count()) throw … 但是,这看起来像是O(2n) – 是吗? ToArray()可能是O(1)? 这看起来更快: var set = new HashSet(); foreach (var str in enum) { if (!set.Add(str)) throw … } 这应该是O(n),但是,是否也有内置方式? 编辑:也许Distinct()在内部使用它? 解决方案:在考虑了所有评论和答案后,我为我的第二个解决方案编写了一个扩展方法,因为这似乎是最快的版本,也是最具可读性的: public static bool ContainsDuplicates(this IEnumerable e) { var set = new HashSet(); // ReSharper disable LoopCanBeConvertedToQuery foreach (var item […]

我如何从Dictionaryinheritance?

我想要Dictionary所有function,但我希望它为Foo 。 我该怎么做呢? 目前我正在使用 class Foo : Dictionary { /* I’m getting all sorts of errors because I don’t know how to overload the constructors of the parent class. */ // overloaded methods and constructors goes here. Foo():base(){} Foo(int capacity):base(capacity){} } 重载父类的构造函数和方法的正确方法是什么? 注意:我认为我滥用了“过载”一词,请更正或建议更正。

如何检测BindingList 中项目属性的更改?

我有一个具有属性A和B的自定义类Foo。我想在数据绑定控件中显示它。 我创建了一个类Foos : BindingList 。 为了更新Foos类的一些内部属性,我需要在列表中的项目上通知属性更改(我可以处理插入,删除等)。 你会如何实现这个function? 我应该从支持它的框架中的某个对象inheritanceFoo吗? 我想我可以创建一些事件,通知我是否有变化,但这是应该做的方式吗? 或者框架中是否有一些模式,这对我有帮助?

不区分大小写的列表

我需要一个不区分大小写的列表或集合类型的集合(字符串)。 创建一个最简单的方法是什么? 您可以指定要在Dictionary的键上获得的比较类型,但我找不到任何类似的List。

C#WebAPI序列化字符串列表

这应该是一个相对简单的问题,我在网上暂时待了一段时间,仍然无法找到解决方案。 现在我的webapi返回这样的输出 Japanese Korean French 我希望它像这样回归 Japanese Korean French 完成这项任务的最简单方法是什么? 所以基本上我有两件事要做 1)摆脱命名空间xmlns:d3p1 =“http://schemas.microsoft.com/2003/10/Serialization/Arrays”2)更改outter元素的名称 至 3)更改内部元素的名称 至 我在Merchant类中的数据库是这样的 [DataMember(EmitDefaultValue = false)] public List WebCuisine { get; set; } 谢谢你在advnace

Dictionary.Keys返回的KeyCollection上的操作有多快? (。净)

IDictionary定义方法IDictionary.ContainsKey(in TK)和属性IDictionary.Keys (在ICollection类型中)。 我对IDictionary Dictionary实现中此方法和属性的(渐近)复杂性感兴趣。 考虑定义 IDictionary dict = new Dictionary(); int k = new Random().Next(); 并且考虑到我们已经在字典中添加了唯一的KeyValuePair 。 调用dict.ContainsKey(k)预期(渐近)复杂度是多少? 我希望它在O(1)但我没有在Dictionary.ContainsKey文档中找到它。 调用dict.Keys.Contains(k)预期(渐近)复杂度是多少? 我希望它在O(1)但我没有在Dictionary.Keys文档中找到它,也没有在Dictionary.Keys文档中找到它。 如果它在O(1)我不明白为什么IDictionary.Keys属性的类型是ICollection而不是ISet (例如在Java中)。