方法';第一';或者';FirstOrDefault';don';没有提供正确的数据
本文关键字:数据 don 或者 第一 FirstOrDefault 方法 | 更新日期: 2023-09-27 18:19:31
我前面的消息不正确,不要在其他帖子中得到答案
这是我遇到问题的代码部分。
Libelle_TOT和Groupe_Alerte是VarChar(50)
foreach (var donneesDUMP in don)
{
if (cap.Any(c => c.PMRQTOTM == donneesDUMP.PMRQTOTM))
{
if(!cap.Any(c => c.Libelle_TOT == donneesDUMP.Libelle_TOT))
{
cnn.Resultat.Add(new Resultat
{
NomTable = "CapitalisationActuelle",
Groupe_D_alerte = donneesDUMP.Groupe_Alerte,
NomChamp = "PMRQTOTM",
TOTMPMRQ = donneesDUMP.PMRQTOTM,
SiModifie = "Libelle TOT",
LibelléTOTAvant = cap.Select(c => c.Libelle_TOT).FirstOrDefault(),
//LibelléTOTAvant = cap.Any(c => !string.IsNullOrEmpty(c.Libelle_TOT))
//? cap.Select(x => x.Libelle_TOT).First(l => !string.IsNullOrEmpty(l))
//: " ",
LibelléTOTApres = donneesDUMP.Libelle_TOT,
Remarque = "Modifie"
});
}
LibelléTOTAvant = cap.Select(c => c.Libelle_TOT).FirstOrDefault(),
和
LibelléTOTAvant = cap.Any(c => !string.IsNullOrEmpty(c.Libelle_TOT))
? cap.Select(x => x.Libelle_TOT).First(l => !string.IsNullOrEmpty(l))
: " ",
工作,我没有任何建筑错误。但每次我都有一个问题,可能是.First()和.FirstOrDefault()。它总是写第一个Libelle_TOT,而不是好的。
这是我得到的一个例子:http://zupimages.net/viewer.php?id=14/35/6ri4.png
LibelléTOTAvant有时具有相同的值(test5),因为test5是表capitalizationActuelle的第一行,但它不是正确的值。例如,对于LibelléTOTApres=qfd,我应该得到test3,而不是test5,等等。
如果我理解正确,您可能需要选择与当前衣服的PMRQTOTM匹配的特定行DUMP:
LibelléTOTAvant = cap.First(c => c.PMRQTOTM == donneesDUMP.PMRQTOTM).LibelleTOT;
请注意,这是First()中的WHERE条件,用于选择与指定条件匹配的行,以及用于获取第一行(现在也是唯一一行)的First条件——与更详细的版本相同:
LibelléTOTAvant = cap.Where(c => c.PMRQTOTM == donneesDUMP.PMRQTOTM).First().LibelleTOT;
这个:
LibelléTOTAvant = cap.Select(c => c.Libelle_TOT).FirstOrDefault(),
只会选择cap的第一个Libelle_TOT
,因为你没有给出任何条件
这个:
LibelléTOTAvant = cap.Any(c => !string.IsNullOrEmpty(c.Libelle_TOT))
? cap.Select(x => x.Libelle_TOT).First(l => !string.IsNullOrEmpty(l))
: " ",
应该选择第一个非空的Libelle_TOT
,尽管您可以将其替换为:
LibelléTOTAvant = cap.FirstOrDefault(c => !string.IsNullOrEmpty(c.Libelle_TOT));
因为如果没有空的libelle,它会给你null。
你只是想选择第一个非空的libelle吗?