Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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# 如何在c中查找列列表中的对象#_C# - Fatal编程技术网

C# 如何在c中查找列列表中的对象#

C# 如何在c中查找列列表中的对象#,c#,C#,我叫蒂亚戈!我在学C。我需要做一个练习,在带有分区(列)的列表中搜索对象 C#版本4.5.2 Visual Studio 2017 名单如下: alunosMatriculados.Add(new Aluno { matAluno = 2, nomeAluno = "MARIANA DA SILVA", cpfAluno = "111.111.111-12", turmaAluno = "2I", numFaltas = 0 }); alunosMatriculados.Add(new Alun

我叫蒂亚戈!我在学C。我需要做一个练习,在带有分区(列)的列表中搜索对象

C#版本4.5.2 Visual Studio 2017

名单如下:

alunosMatriculados.Add(new Aluno { matAluno = 2, nomeAluno = "MARIANA DA SILVA", cpfAluno = "111.111.111-12", turmaAluno = "2I", numFaltas = 0 });
alunosMatriculados.Add(new Aluno { matAluno = 3, nomeAluno = "ANA MARIA SILVEIRA", cpfAluno = "111.111.111-13", turmaAluno = "1H", numFaltas = 5 });
alunosMatriculados.Add(new Aluno { matAluno = 4, nomeAluno = "ROBERTO LINS", cpfAluno = "111.111.111-14", turmaAluno = "3H", numFaltas = 1 });
嗯。问题是“在用户插入的列表中搜索某些内容”

我试过:

string name;

 Console.WriteLine("Student's name");
    name = Console.ReadLine();

    Console.WriteLine(alunosMatriculados.Find(x => x.nomeAluno.Contains(name)));
var
name
是学生的名字
nomeAluno
是学生的名字(我是巴西人…)

谁来帮帮我

这是因为
List.Find
返回
T
作为结果,而
Console.WriteLine
将打印对象的
.ToString()
作为输出。结果是它打印出
Aluno.ToString()
,这是默认的类名。我会这样写

Aluno a = alunosMatriculados.Find(x => x.nomeAluno.Contains(name));
if (a != null) 
{
     // ... Whatever you want to do with 
}
else Console.WriteLine("Not found");
这样,我们就涵盖了可能没有任何项目符合我们的条件的情况。但是,仍有一些情况下可能有多个匹配项,我建议您查找如何使用LINQ的
Where
foreach
,以便可以打印所有匹配项。

以下是我的想法:

    class Aluno
    {
        public int matAluno { get; set; }
        public string nomeAluno { get; set; }
        public string cpfAluno { get; set; }
        public string turmaAluno { get; set; }
        public int numFaltas { get; set; }
    }

    static void Main(string[] args)
    {
        var alunosMatriculados = new List<Aluno>();
        alunosMatriculados.Add(new Aluno { matAluno = 2, nomeAluno = "MARIANA DA SILVA", cpfAluno = "111.111.111-12", turmaAluno = "2I", numFaltas = 0 });
        alunosMatriculados.Add(new Aluno { matAluno = 3, nomeAluno = "ANA MARIA SILVEIRA", cpfAluno = "111.111.111-13", turmaAluno = "1H", numFaltas = 5 });
        alunosMatriculados.Add(new Aluno { matAluno = 4, nomeAluno = "ROBERTO LINS", cpfAluno = "111.111.111-14", turmaAluno = "3H", numFaltas = 1 });

        foreach(var aluno in FindByName(alunosMatriculados, "SIL"))
        {
            Console.WriteLine(aluno.nomeAluno);
        }

        Console.ReadLine();
    }

    static IEnumerable<Aluno> FindByName( IEnumerable<Aluno> alunos, string partOfName )
    {
        //TODO error handling 
        //TODO use brazilian culture, if needed
        return  alunos
            .Where(a => !string.IsNullOrEmpty(a.nomeAluno))
            .Where(a => a.nomeAluno.Contains(partOfName));
    }

    static Aluno FindFirstByName(IEnumerable<Aluno> alunos, string name)
    {
        return FindByName(alunos, name)?.FirstOrDefault();
    }
class-Aluno
{
公共int matAluno{get;set;}
公共字符串nomeAluno{get;set;}
公共字符串cpfAluno{get;set;}
公共字符串turmaAluno{get;set;}
公共整数numFaltas{get;set;}
}
静态void Main(字符串[]参数)
{
var alunosMatriculados=新列表();
添加(新Aluno{matAluno=2,nomeAluno=“MARIANA DA SILVA”,cpfAluno=“111.111.111-12”,turmaAluno=“2I”,numFaltas=0});
添加(新Aluno{matAluno=3,nomeAluno=“ANA MARIA SILVEIRA”,cpfAluno=“111.111.111-13”,turmaAluno=“1H”,numFaltas=5});
添加(新Aluno{matAluno=4,nomeAluno=“ROBERTO LINS”,cpfAluno=“111.111.111-14”,turmaAluno=“3H”,numFaltas=1});
foreach(FindByName中的var aluno(alunosMatriculados,“SIL”))
{
控制台写入线(aluno.nomeAluno);
}
Console.ReadLine();
}
静态IEnumerable FindByName(IEnumerable alunos,名称的字符串部分)
{
//TODO错误处理
//TODO使用巴西文化,如果需要
返回阿鲁诺斯
.Where(a=>!string.IsNullOrEmpty(a.nomeAluno))
其中(a=>a.nomeAluno.Contains(partOfName));
}
静态Aluno FindFirstByName(IEnumerable alunos,字符串名称)
{
返回FindByName(alunos,name)?.FirstOrDefault();
}

那么您在使用此代码时面临的问题是什么?这个代码应该生成什么输出以及您得到什么输出?我需要根据学生的姓名显示所有行数据。例如:当用户输入“Mariana da Silva”时,您需要的是注册(matAluno)、CPF(cpfaluno)、班级(学生班级)和学生缺勤(numFaltas)。您在代码方面面临什么问题?当我尝试此代码时:字符串名称;Console.WriteLine(“学生姓名”);name=Console.ReadLine();WriteLine(alunosMatriculados.Find(x=>x.nomeAluno.Contains(name));输出为ProjectName.classnamewo。很紧张。我还在学习。。。无法解释:静态Aluno FindFirstByName(IEnumerable alunos,字符串名称){返回FindByName(alunos,名称)?.FirstOrDefault();}