这就是我的错误:
foreach (var donneesDump in don)
{
if (cap.Any(c => c.PMRQTOTM == donneesDump.PMRQTOTM))
{
if(!cap.Any(d => d.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.Any(c => c.Libelle_TOT),
LibelléTOTApres = donneesDump.Libelle_TOT,
Remarque = "Ajoute"
});
}
}
}
在线LibelléTOTAvant = cap.Any(c => c.Libelle_TOT)
我有两个错误,最后是相同的:
无法将lambda表达式转换为委托类型“System.Func”,因为块中的某些返回类型不能隐式转换为委托返回类型。 AND无法将类型'string'隐式转换为'bool'。
我尝试使用ToString()
方法解决问题,如下所示:
LibelléTOTAvant = ToString(cap.Any(c => c.Libelle_TOT)),
然后我有错误:
方法'ToString'没有重载需要1个参数。
这不是我第一次遇到这种错误,但我仍然没有找到解决这个问题的方法..
提前致谢。 问候。
编辑1:
这就是我。
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,而不是好的。
答案 0 :(得分:3)
我相信Libelle_TOT
是一个字符串(来自Cannot implicitly convert type 'string' to 'bool'.
错误消息)
cap.Any(c => c.Libelle_TOT)
没有意义,因为Any
应该有一个Func<T, bool>
作为参数(返回bool的东西)并传递Func<T, string>
所以你应该做
cap.Any(c => !string.IsNullOrEmpty(c.Libelle_TOT))
例如,或任何其他需要返回bool的东西。
如果LibelléTOTAvant
是一个字符串
cap.Any(c => !string.IsNullOrEmpty(c.Libelle_TOT))
? <something which is a string>
: <something else which is a string>
修改强>
例如
cap.Any(c => !string.IsNullOrEmpty(c.Libelle_TOT))
? cap.Select(x => x.Libelle_TOT).First(l => !string.IsNullOrEmpty(l))
: 'No Label'
或者在这种情况下,你可以做
cap.Select(x => x.Libelle_TOT).FirstOrDefault(l => !string.IsNullOrEmpty(l)) ?? 'No Label'