Tag: list

List.Except不起作用

我尝试减去2个列表,如下面的代码, assignUsers有3条记录, assignUsers有2行。 在Except方法之后我仍然得到3行,虽然我应该获得1条记录,因为assignedUsers 2行类似于assignUsers var users = accountApp.GetUsersByAccountId(context.GetUserData().AccountId); List assignUsers = Mapper.Map<List>(users).ToList(); var mailUsers = mailApp.GetMailAssignedByMailId(id).Select(m => new { m.UserId, m.User.Name }).ToList(); List assignedUsers = mailUsers.Select(Mapper.DynamicMap).ToList(); assignUsers = assignUsers.Except(assignedUsers).ToList();

将对象列表写入文件

我有一个以下格式的class级推销员: class salesman { public string name, address, email; public int sales; } 我有另一个用户输入姓名,地址,电子邮件和销售的课程。 然后将此输入添加到列表中 List salesmanList = new List(); 在用户根据需要向列表中输入尽可能多的推销员之后,他们可以选择将列表保存到他们选择的文件中(我可以将其限制为.xml或.txt(这更适合))。 如何将此列表添加到文件中? 如果用户希望稍后查看记录,则还需要将该文件重新读回列表。

列表容量返回的项目多于添加的项目

List上有几个属性似乎与列表中的项目数相关 – Capacity , Count (作为属性和方法存在)。 与仅具有Length Array相比,这非常令人困惑。 我正在使用List.Capacity但它会产生意想不到的结果: List fruits = new List(); fruits.Add(“apple”); fruits.Add(“orange”); fruits.Add(“banana”); fruits.Add(“cherry”); fruits.Add(“mango”); Console.WriteLine(“the List has {0} items in it.”, fruits.Capacity); 当我运行它时,控制台显示: 列表中有4个项目。 我不明白为什么它显示8的Capacity ,当我只添加5项。

将数据读取器中的行转换为键入的结果

我正在使用第三方库来返回数据读取器。 我想要一个简单的方法,并尽可能通用将其转换为对象列表。 例如,假设我有一个具有2个属性EmployeeId和Name的“Employee”类,我希望将数据读取器(包含员工列表)转换为List 。 我想我别无选择,只能迭代数据阅读器的各行,并为每一行将它们转换为我将添加到List的Employee对象。 更好的解决方案? 我正在使用C#3.5,理想情况下我希望它尽可能通用,以便它适用于任何类(DataReader中的字段名称与各种对象的属性名称匹配)。

从List中删除重复项的最有效方法

假设我有一个包含重复值的List,我想删除重复项。 List myList = new List(Enumerable.Range(0, 10000)); // adding a few duplicates here myList.Add(1); myList.Add(2); myList.Add(3); 我找到了3种方法来解决这个问题: List result1 = new HashSet(myList).ToList(); //3700 ticks List result2 = myList.Distinct().ToList(); //4700 ticks List result3 = myList.GroupBy(x => x).Select(grp => grp.First()).ToList(); //18800 ticks //referring to pinturic’s comment: List result4 = new SortedSet(myList).ToList(); //18000 ticks 在SO的大多数答案中, Distinct方法显示为“正确的”,但HashSet总是更快! 我的问题:当我使用HashSet方法时,有什么我必须要注意的,还有另一种更有效的方法吗?

LINQ找到一系列连续数字

我有一个整数列表。 我想在该列表中找到所有连续数字的运行,由起始索引和长度定义。 因此,例如,对于[1,2,3,5,7,8]输入列表,输出将是[{1,3}, {5,1}, {7,2}] 。 这很容易使用循环,像这样(未经测试的伪代码): for(i=1, i < maxNum; i++) { number = list[i]; previousNumber = list[i-1]; if(number – previousNumber == 1) { runLength++; } else { result.Add(startingNumber, runLength); runLength = 1; startingNumber = number; } } 但我认为可以使用LINQ。 任何想法如何做到这一点?

C#中的列表大小限制

这可能看起来很讨厌,但为什么我们在列表中有如此短的对象数限制。 我写了以下代码来测试C#中的列表大小 List test = new List(); long test1 = 0; try { while (true) { test.Add(1); test1++; } } catch (Exception ex) { MessageBox.Show(test1 + ” | ” + ex.Message); } 列表的大小只能是134217728 并不是那么不公平:(如果我想添加对象甚至超过’整数’限制(我的意思是对象数> 2 ^ 32),那么什么是替代方式?

列出线程安全

我使用以下代码 var processed = new List(); Parallel.ForEach(items, item => { processed.Add(SomeProcessingFunc(item)); }); 上面的代码线程安全吗? 处理后的列表是否有可能被破坏? 或者我应该在添加之前使用锁? var processed = new List(); Parallel.ForEach(items, item => { lock(items.SyncRoot) processed.Add(SomeProcessingFunc(item)); }); 谢谢。

在List 中查找最常出现的数字

使用linq有快速而好的方式吗?

如何在c#中列出.zip文件夹的内容?

如何在C#中列出压缩文件夹的内容? 例如,如何知道压缩文件夹中包含多少项,以及它们的名称是什么?