如何比较C#中的这些数组,并返回相等的值
我正在尝试用C#语言制作一个程序,可以根据不同人群的可用性来安排会议。目前,它将获取用户数据并将其放入文本文件中,示例行将显示“Name 01/01/2000 11”,并且将有多行。我想我已经设法让它读入一个数组,尽管我不确定如何测试它(例如,将数组输出到标签?),现在需要比较日期和时间,并输出相等的日期和时间。以下是完成此操作的一些代码,这些代码似乎执行得很好,并且确实更新了文件:如何比较C#中的这些数组,并返回相等的值,c#,arrays,compare,C#,Arrays,Compare,我正在尝试用C#语言制作一个程序,可以根据不同人群的可用性来安排会议。目前,它将获取用户数据并将其放入文本文件中,示例行将显示“Name 01/01/2000 11”,并且将有多行。我想我已经设法让它读入一个数组,尽管我不确定如何测试它(例如,将数组输出到标签?),现在需要比较日期和时间,并输出相等的日期和时间。以下是完成此操作的一些代码,这些代码似乎执行得很好,并且确实更新了文件: System.IO.StreamWriter file = new System.IO.StreamWr
System.IO.StreamWriter file = new System.IO.StreamWriter(@"Times.txt", true);
file.WriteLine(lineForFile);
file.Close();
string[] lines = File.ReadAllLines(@"Times.txt");
string[][] jaggedArray = lines.Select(line => line.Split(' ').ToArray()).ToArray();
非常感谢您的帮助 有几种方法可以解决这个问题。但我建议你引入一些打字类来帮助你。可以从一个名为appointment的简单类开始:
public class Appointment
{
private Appointment(string name, DateTime app, int id)
{
Name = name;
Time = app;
Id = id;
}
public string Name {get ; private set;}
public DateTime Time{get; private set;}
public int Id{get ;private set;} // Not sure if the 11 was an id or the time in your example.
public static Create(string name, DateTime app, int id)
{
return new Appointment(name,app, id);
}
}
该类将帮助您处理数据。因此,现在您可以从数据层获取约会列表,并从分隔字符串列表中创建每个约会的新实例(如果必须使用文件存储,可以考虑使用空格以外的内容来分隔数据(可能是管道或逗号)。另一种选择是使用db或xml格式
IList<Appointment> appointemts = File.ReadAllLines(@"Times.txt").Select(v => {var row = v.Split(' '); return Appointment.Create(row[0],DateTime.parse(row[1]),int.parse(row[2]);}).ToList();
现在,您有了一个字典,其中包含约会时间的键和一个值,该值是当天/时间的约会列表。通过该字典,您可以执行一个简单的查询来识别冲突,这基本上是任何具有多个约会的列表时间
var conflicts = appointmentsByDate.Where(a => a.Appointments.Count > 1);
首先,你不需要jaggedArray。当你执行
line.Split(“”)
时,你将返回一个字符串[]。而且你不需要ToArray()).ToArray()
在下面的C#Stackoverflow文件上进行快速的谷歌搜索。ReadAllLines
你可以看到许多关于如何使用string.Split()执行此操作的示例
方法
var conflicts = appointmentsByDate.Where(a => a.Appointments.Count > 1);