C# 列表中长度有限的排列组合
我有一个报价列表,我想从中创建有限的链长度的"链"(例如排列). 我已经获得了使用kw.combinatorics 这是我当前的代码: private static List> GetPerms(List list, int chainLength) { List> response = new List>(); foreach (var row in new Permutation(list.Count).GetRows()) { List innerList = new List(); foreach (var mix in Permutation.Permute(row, list)) {
0 2024-04-16
编程技术问答社区
当我添加新的数据时,列表项目会发生变化......为什么?
我有一种将文件转换为字节的方法,以便以后可以通过Internet发送.无论如何,因为我打算发送大文件,我发送了大量文件,而不是发送整个文件.每个块由一个字节(字节[])组成.我是所有这些的新手,所以我想在发送之前将每个块保存在块(列表)列表中.所以我的班级看起来像: public class SomeClass { public List binaryFileList; public void SendChunk(byte[] data, int index) { binaryFileList.Add(data); // later I will add code in here to do something with data } public void test(string path) { binaryFileList = new List(
0 2024-04-16
编程技术问答社区
返回一个列表,其中列表1和列表2中的项目匹配。
让我们假设我有2 List list1和list2,看起来像这样: 列表1 : [ID:1, Name:"item1"] [ID:2, Name:"item2"] [ID:3, Name:"item3"] [ID:4, Name:"item4"] 列表2: [ID:2, Name:"item2"] [ID:3, Name:"item3"] [ID:5, Name:"item5"] [ID:6, Name:"item6"] 如何获得仅包含两个列表中的对象的列表?使用上面的示例,我想返回: [ID:2, Name:"item2"] [ID:3, Name:"item3"] 修改原始列表是可以的.最好的方法是什么? 解决方案 var result = list1.Intersect(list2).ToList(); 是最简洁的.但是请记住,它使用的是可能对您有效的默认平等比较.如果没有,您可以提供自己的: public c
0 2024-04-16
编程技术问答社区
如何添加List<List<MyClass>>()作为DataGrid.ItemsSource?
问题 如果我有这样的列表,我们称其为Rows,我不会像myDataGrid.ItemsSource = Rows;那样添加 比我在所有列中获得的第一个myclass 看起来像 Column0 | Column1 | Column2 | Column3 firstrow0 | firstrow0 | firstrow0 | firstrow0 firstrow1 | firstrow1 | firstrow1 | firstrow1 firstrow2 | firstrow2 | firstrow2 | firstrow2 代码 XAML
0 2024-04-16
编程技术问答社区
获取多选列表框的选择值
我有一个以多选择模式的列表框,该列表框是数据库中的15个值绑定的数据.我有此代码显示在列表框中选择的每个项目的选定值: foreach (var list in list_box.SelectedItems) { MessageBox.Show(list_box.SelectedValue.ToString()); } 不幸的是,正确的消息框显示,但它们仅显示已选择的列表中的第一个项目的选定值. 请有人可以帮我解决这个问题吗?我一直在搜索网络,但找不到一个正确工作的示例! 解决方案 我回到了这个问题并通过这样做解决了: foreach(int blah in multilistbox.SelectedIndices){ MessageBox.Show(blah.ToString()); } 感谢您的帮助! 其他解决方案 您应该从 li
0 2024-04-16
编程技术问答社区
打印对象的List<>属性值 C#
我有一种例如: 的对象类型 Class { public string Variable {get; set;} public List ListVariable {get; set;} } AnotherClass { public string Variable {get; set;} public int IntVariable {get; set;} } 我已经尝试了几种解决方案(ObjectDumper,object.GetProperties),以打印所有Class对象值; 问题结论是无法打印List.而不是所有的项目,我只得到它的count属性. 尝试的解决方案: 在使用反射的对象属性的值 递归获取对象的属性和儿童属性 找到对象的所有属性和子专业/p> 等等.. 编辑: 好吧,正如我所看到的,我可能没有很好地描述问题. 我需要打印所有对象的属性及其值,当我不知
0 2024-04-16
编程技术问答社区
List.Contains()没有检测到一个字符串。
标题为我的列表" cvqt"包含不同的字符串,例如"1 maxHearts Player",我试图检查它是否包含" maxHearths " + name(每当某种内容Enter the Enter's the the the the the players as players as player as player),并且尝试过但是在那里断开点,它显示了播放器,所以这不是问题,但它只会跳过if语句.这是代码 if (Cvqt.Contains(" maxClubs " + name)) { Cvqt.Remove(maxClubs.ToString() + " maxClub " + name); } else { maxClubs = j; Cvqt.Add(maxClubs + " maxClubs " + name); } if (Cvqt.Contains(" clubs " + name
0 2024-04-16
编程技术问答社区
C#比较两个不同对象的列表
我看到比较两个列表的最快方法m无法将其适应我的情况.我的问题是列表是不同类型的. 我的列表就是这样: List firstList; List secondList; 这是我现在拥有的: foreach (Type1 item in firstList) { if (!secondList.Any(x => x.Id == item.Id)) { // this code is executed on each item in firstList but not in secondList } } foreach (Type2 item in secondList) { if (!firstList.Any(x => x.Id == item.Id)) { // this code is executed on each item in secondList but
0 2024-04-16
编程技术问答社区
如何使用C#在UWP中从Windows 10日历中检索约会信息
我使用C#在Windows 10中创建一个通用Windows应用程序,该应用程序在Windows日历应用程序中管理约会.我可以添加约会,并可以使用ID编辑或删除它们.但是,如果没有检索它们和过滤,我就不知道它们的ID. 使用C#? 检索Windows 10中的日历约会列表是否有任何经验 解决方案 您可以使用Windows.applicationmodel.appointments.appointmentstore类检索所有日历约会. 在此示例中,我将在接下来的24小时内检索约会 AppointmentStore appointmentStore = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AllCalendarsReadOnly); var dateToShow = DateTime.Now.AddDays(0); var duration = TimeSpan.
0 2024-04-16
编程技术问答社区
如何从实际的对象列表中创建一个对象属性的列表?
我有一个我定义Connection的对象的观测值. 如何从该列表中的所有连接中提取所有URL? 我想做这样的事情,但以正确的方式: ObservableCollection connectionList; List listUrl = new List(); foreach (var connection in connectionList) { listUrl.Add(connection.PortalUrl); } 解决方案 "以正确的方式" 好吧,您的方法没有"错误",但是如果您使用的是.NET 3.5或更高,则可以使用LINQ在一行中完成: List listUrl = connectionList.Select(c => c.PortalUrl).ToList(); 如果您不了解LINQ的工作原理,则坚持使用您的方法 - 它们在功能上等效. 如果您
0 2024-04-16
编程技术问答社区
列表中,替换掉之前的所有元素
我有一个类型的人列表.当我创建人列表时,它将用当前的信息替换上一个列表元素的信息.我已经读到这是静态类变量的问题,但我的属性都不是静态的. class Person{ private string _name; private string _address; public string Name{ get{ return _name;} set { _name = value;} public string Address{ get{ return _address;} set { _address = value;} } } 我从文件中读取的人并将其存储在字符串中.我踏上来确保阵列正确.是. 这是很奇怪的地方: string[] personArray; Person tempPerson = new Person(); List people = new List(); foreach (string line in li
0 2024-04-16
编程技术问答社区
两个包含相同元素的数组能不能不相等?
我今天遇到了一个令人惊叹的问题,我试图找到列表集合中是否包含一个对象.问题在于,当我已经在那里看到它时,列表找不到对象,并将索引返回为-1.然后,我创建了一个自定义索引查找器通过比较属性而不是直接平等来查找对象,我发现该对象的属性之一,一个相同的ushort数组在比较,比较时返回false,但是它们包含完全相同的元素. 数组如下: {ushort [1]} [0] 13 ,两个对象之一包含在列表中,而另一个对象是单独包含的.造成这个问题的原因是什么?我已经尝试了所有类型的方法来解决问题,但我无法弄清楚问题是什么.在这种特殊情况下,导致两个阵列返回false之间的比较是什么,我使用Object.equals以及正常==比较并绑定.谢谢 解决方案 对于数组,仅当您比较两个指向同一数组的引用时,等于等等才会返回true.要通过内容比较不同的数组,您可以使用: Enumerable.SequenceEqual(a1, a2) 另外,如果集合包含您的自定义类型
0 2024-04-16
编程技术问答社区
内存锁以确保共享数据可以被许多线程读取,但只能被一个线程写入?
我试图编写一个C#程序,其中列表中的值 a 在线程中的特定值 x 中检查.我希望这些线程将它们的 x 值与列表中的每个值进行比较,如果找不到,我希望它们将其值 x 添加到 a .然后,该线程将从其私有内存中的列表中获取新的X ,然后再次将其与 a 中的值进行比较.该程序的目的是使 a 作为唯一值的列表,并包含线程中列表的所有值. 我想知道C#是否有一些本机读取锁定,可以从单个列表中读取尽可能多的线程,但是一旦开始写作,我希望所有其他线程都需要等待再次从列表中阅读. 另外,我是否可以确保多个线程不会同时尝试写入?如果2个以上的线程包含相同的 x 值,我可以看到这是一个问题 解决方案 我想知道C#是否有一些本机读/写锁,可以从单个列表中读取尽可能多的线程 是的,使用/a>.这就是它的设计. 分别有两个版本的.net ReaderWriterLock和ReaderWriterLockSlim中的ReaderWriterlock.后一个是优选的,因为它是有效的.
0 2024-04-16
编程技术问答社区
将一个List<String>转换为List<int>。
我从文本文档中读取了一个数字列表,并将其保存在List中,我试图将这些数字转换为List.数字被空间分开.这是我尝试的,假设数字是字符串列表: List AllNumbers = Numbers.ConvertAll(Convert.ToInt32); 当我尝试使用时,说"输入字符串不是正确的格式." 将List转换为List的正确方法是什么? 样本: string numbers = File.ReadAllText("numbers.txt"); string[] allNumbers = numbers.Split(new char[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); List List =
0 2024-04-16
编程技术问答社区
C#--关于数据表格排序的问题
我已经搜索了我的问题的答案. 我已经开发了一个带有几个datagridviews的C#Winforms程序. 问题是我想通过单击Columnheader来分类数据GatagridView(我认为这是标准...) 但这只是不起作用. 我尝试了dgv.sort方法,但这引发了一个例外,即dataGridView必须绑定到ibindinglist,但我不知道如何做到这一点,我真的不想重新设计所有内容. > 这是我填充DGV的方式. 我有某些自定义对象,并将它们放入列表中.当该列表被充分填充时,我将其设置为DGV的数据源. list.Add(costumobject); . . . dgv.DataSource = list; 您能告诉我一种使排序功能正常的快速方法吗? 善意, 解决方案 datagridview不会在内部对行本身进行整理.相反,它利用了所附数据源的排序功能,如果数据源不提供排序功能,则dataGridView列排序也不可用.
0 2024-04-16
编程技术问答社区
是否可以改变一个原始数据类型的默认值?
我最近创建了一个通用矩阵类,该类充当围绕列表>集合的包装器.据我所知,这堂课正常工作.我遇到了一个小问题. 的默认值. i创建了一个矩阵(3,3)的实例,该实例创建一个INT的3x3矩阵,所有默认值都使用默认为0(t).我知道值类型(包括原始图)默认为0等效,并且参考类型默认为NULL.我想知道是否可以更改此默认值,以便如果将值类型传递到矩阵中,则将其填充为5,而不是0. . 我尝试创建自己的struct(值类型),但是由于无法在structs内使用无参数构造函数,我找不到一种方法来从0. 更改默认值. 我怀疑不可能更改默认值,并且在实例化后,我将不得不通过单元格通过矩阵,但是我想在这里询问,以防万一,以防万一. 解决方案 public Matrix(int width, int height) : this(width, height, default(T)) {} public Matrix(int width, int height, T defau
0 2024-04-16
编程技术问答社区
C# List<T>内部程序
将对象添加到诸如列表之类的集合时会发生什么? List people = new List(); Person dan = new Person() { Name="daniel", Age=10 }; people.Add(dan); dan = new Person() { Name = "hw", Age = 44 }; 当我执行上述代码时,List people不会受到最终行的影响. 因此,我假设列表 copies 添加对象的参考,因此,当更改引用时,列表不会受到影响.我是正确的吗? 解决方案 好吧,您所显示的代码实际上根本没有将任何内容添加到列表中.我认为您的意思是: people.Add(dan); 在某个地方? 但是,是的,List包含对对象的引用.它不知道引用的来源.值得清楚的是变量及其价值之间的差异.当您致电时: people.Add(dan); 在这种情况下,将参数表达式
0 2024-04-16
编程技术问答社区
C#基于另一个列表<int>中的自定义列表中的项目
我有一个自定义列表.返回所有项目.信息的结构如下: public class Info { public string Code { get; set; } public string ClinicianDescription { get; set; } } 我想从列表中排除任何信息对象,其中代码属性在单独列表中公平任何值. 在做到这一点的干净方法之后,我尝试使用.except(),但是我必须将列表转换为似乎不正确的对象. 到目前为止,我已经尝试过这样的事情: List ids = contactList; var List test = info.RemoveAll(x => ids.Any(i => i == x.Code)); 解决方案 您可以使用Except,尽管这需要IEnumerable,而不是谓词,并且在确定两个对象的等效性 var blackListCodes = contactList
0 2024-04-16
编程技术问答社区
在C#中,将IEnumerable<T>转换为List<T>的最快速方法
在C#中,在编写代码所需的时间方面,使用IEnumerable创建和填充列表的最快方法是什么?执行所需的时间呢? 我的第一个想法是: List list = new List(); foreach(int number in iterator) list.Add(number); 有更快的方法吗? 解决方案 当涉及List本质上,您有2种方法,我正在尝试下面讨论.为了清楚起见,让我们假设,List的分配需要恒定时间(c),将元素添加到List中也需要恒定的时间. 创建空List并填充 List list = new List(); // C foreach(int i in iterator) { list.Add(i); //n*C } 您可以看到这种方法需要N*C + C时间,因此,如果您忽略了C,则复杂性为O(N). 基于其他IEnumerable
0 2024-04-16
编程技术问答社区