2 回答
TA贡献1880条经验 获得超4个赞
这是我的想法:
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();
}
TA贡献1808条经验 获得超4个赞
这是因为作为结果List<T>.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以便您可以打印所有匹配项。
- 2 回答
- 0 关注
- 131 浏览
添加回答
举报