gpt4 book ai didi

c# - Linq 加入数组

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:54 25 4
gpt4 key购买 nike

我有 3 个类:

public class Disciplina
{
public int Key { get; set; }
public string Name { get; set; }
public string[] Semestr { get; set; }
public int Time { get; set; }
public List<int> TimeToAll { get; set; }
public string Otchetnost { get; set; }
public int Specialnost { get; set; }
...
}

public class Cafedra
{
public int Key { get; set; }
public string Name { get; set; }
public string Facultet { get; set; }
public string Telefone { get; set; }
public List<int> Specializations { get; set; }
...
}

public class Specialization
{
public int Key { get; set; }
public string Name { get; set; }
public string SpecialName { get; set; }
public string FormaObuch { get; set; }
public string[] DisplinsID { get; set; }
...
}

我需要选择所选 cafedra 的所有 Disciplina。我由许多 foreach 创建,但我需要它与 linq。

我试过了,但是一个 Cafedra 可以有很多 Specialization,而 Specialization 可以有很多 Disiplins,我不知道如何在 LINQ 中选择它?

我的方法

private static void DiscipliniCafedri()
{
Console.WriteLine("Выберите кафедру:");
for (int i = 0; i < Cafedras.Count; i++)
{
Console.WriteLine(i + 1 + " " + Cafedras[i].ToString());
}
int ID = Convert.ToInt32(Console.ReadLine());

List<Specialization> spesc = new List<Specialization>();
Console.Clear();
Console.WriteLine("Дисциплины выбранной кафедры:");

foreach (int s in Cafedras[ID - 1].Specializations)
{
spesc.Add(Specializations[s - 1]);
}

foreach (Specialization s in spesc)
{
foreach (string d in s.DisplinsID)
{
Console.WriteLine(Disciplinas[Convert.ToInt32(d) - 1].Name);
}
}
}

最佳答案

转换嵌套循环不需要连接——你可以做一系列 Select改为调用:

var res = Cafedras[ID - 1]
.Specializations
.Select(s => Specializations[s - 1])
.SelectMany(s => Disciplinas[Convert.ToInt32(s.DisplinsID) - 1].Name)
.ToList();

以上,

  • 第一个Select表示创建 specs 的第一个循环
  • 第二 SelectMany表示两个嵌套循环。

这会产生 List<string>res , 带有可以打印的主题名称。

关于c# - Linq 加入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50435254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com