Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将具有x(列)和y(行)属性的列表打印到表中?_C# - Fatal编程技术网

C# 如何将具有x(列)和y(行)属性的列表打印到表中?

C# 如何将具有x(列)和y(行)属性的列表打印到表中?,c#,C#,假设我有下面这个班 public class Seat { public int Row { get; } public int Col { get; } public EnumStatus Status { get; set; } /// <summary> /// A valid seat object will always need row and col. /// </summary> /// <p

假设我有下面这个班

public class Seat
{
    public int Row { get; }
    public int Col { get; }
    public EnumStatus Status { get; set; }

    /// <summary>
    /// A valid seat object will always need row and col.
    /// </summary>
    /// <param name="row"></param>
    /// <param name="col"></param>
    public Seat(int row, int col)
    {
        Row = row;
        Col = col;
        Status = EnumStatus.Empty;
     }

    public enum EnumStatus
    {
        Empty, Taken
    }
}
公务舱座位
{
公共int行{get;}
公共整数列{get;}
公共枚举状态状态{get;set;}
/// 
///有效的座椅对象始终需要行和列。
/// 
/// 
/// 
公共座位(国际行、国际列)
{
行=行;
Col=Col;
Status=EnumStatus.Empty;
}
公共枚举状态
{
空的,拿走的
}
}
我有一个方法,在下面创建30个座位

private void GenerateCompleteSeats()
    {
        int totalRow = 3;
        int totalCol = 10;
        for (int i = 0; i < totalRow; i++)
        {
            for (int y = 0; y < totalCol; y++)
            {
                seats.Add(new Seat(i+1, y+1));
            }
        }
    }
private void GenerateCompleteSeats()
{
int TOTALLOW=3;
int-totalCol=10;
对于(int i=0;i
如何在3行10列中打印30个座位的对象?目前,我只能使用foreach循环来打印它们

private void PrintSeatsDetails(List<Seat> _seats)
    {
        foreach (var item in _seats)
        {
            Console.WriteLine($"Row: {item.Row}. Col: {item.Col}. Status: {item.Status}");
        }
    }
private void printseats详细信息(座位列表)
{
foreach(座位中的var项目)
{
WriteLine($“行:{item.Row}.Col:{item.Col}.Status:{item.Status}”);
}
}

我的意思是:

var输出=新列表();
int TOTALLOW=3;
int-totalCol=10;
对于(变量i=0;i$“行:{seat.Row}.Col:{seat.Col}.Status:{seat.Status}”);
Add(string.Join(“,line));
}
Console.WriteLine(string.Join(“\n”,output));
或者是一种更好的方式,比如:

var输出=新的StringBuilder();
int TOTALLOW=3;
int-totalCol=10;
对于(变量i=0;i$“行:{seat.Row}.Col:{seat.Col}.Status:{seat.Status}”)
.ToList().ForEach(x=>output.Append(x.Trim());
AppendLine();
}
控制台写入线(输出);

其中两个代码段都使用和扩展方法。因此,您有3轮来创建这三行,每轮将从
座位
列表中选取接下来的10个项目,将它们的值串联在一行中,并将其附加到
输出
变量中。

如果您对列表进行排序,您可以使用同一行中的座位单独打印行

    private void PrintSeatsDetails(List<Seat> _seats)
    {
        //sorting by row because you don't know that the order of the seats are set
        _seats.Sort((a, b) => (a.Row.CompareTo(b.Row)));
        int curRow = -1;
        foreach (var item in _seats)
        {
            if (item.Row != curRow) {
                curRow = item.Row;
                Console.Write($"\nRow: {curRow}. ");
            }
            Console.Write($"Col: {item.Col}:{item.Status}. ");
        }
    }
private void printseats详细信息(座位列表)
{
//按行排序,因为您不知道座位的顺序已设置
_座位排序((a,b)=>(a排与(b排)比较);
int curRow=-1;
foreach(座位中的var项目)
{
如果(item.Row!=curRow){
curRow=项目行;
Write($“\nRow:{curRow}”);
}
Write($“Col:{item.Col}:{item.Status}.”);
}
}

您能澄清一下吗?foreach循环有什么问题?是否要在打印前按行然后按列对其排序?您希望输出是什么样子?foreach循环工作正常,但它生成30行(实际输出)的输出,而不是3行(我的预期输出)。我希望输出基于Y(row)属性。答案在第二个代码块中。@jqsoft。第二个代码块如何打印列表中存储的内容?