2 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
這是我的想法:
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貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
這是因?yàn)樽鳛榻Y(jié)果List<T>.Find返回T,Console.WriteLine并將打印對(duì)象.ToString()作為輸出。結(jié)果是打印出來(lái)Aluno.ToString(),默認(rèn)是類名。我會(huì)這樣寫(xiě)
Aluno a = alunosMatriculados.Find(x => x.nomeAluno.Contains(name));
if (a != null)
{
// ... Whatever you want to do with
}
else Console.WriteLine("Not found");
這樣,我們涵蓋了可能沒(méi)有任何項(xiàng)目符合我們的條件的情況。但是,仍然存在可能有多個(gè)匹配項(xiàng)的情況,我建議您查找如何使用 LINQ Where,foreach以便您可以打印所有匹配項(xiàng)。
- 2 回答
- 0 關(guān)注
- 155 瀏覽
添加回答
舉報(bào)