您好,我试图从我的数据库中获取一些日期,但它不会工作,我真的不知道为什么。
我得到以下错误:
Error: Entities in 'DataBase' participate in the 'FK_MSCourse_Language' relationship. 0 related 'Language' were found. 1 'Language' is expected.
我的代码:
var language = db.Language.Where(x => x.Designation == publicLanguage);
if (language != null)
{
newCourse.Language = language.SingleOrDefault();
}
else
{
newCourse.Language = db.Language.SingleOrDefault(x => x.Designation == "English");
}
如果我这样做,它可以工作,但我想从DataBase动态地将它用于语言。
switch (publicLanguage)
{
case "French":
newCourse.Language = db.Language.SingleOrDefault(x => x.Designation == "French");
break;
default:
newCourse.Language = db.Language.SingleOrDefault(x => x.Designation == "English");
break;
}
任何人都知道我做错了什么?
谢谢, 马库斯
答案 0 :(得分:0)
LINQ的Where
操作返回一个IEnumerable,它永远不会为null,这使得if
块无效。无论如何,它总是会执行newCourse.Language = language.SingleOrDefault();
。
我也在考虑尝试在最有可能是字符串变量的地方使用==
也可能会导致一些问题。我建议使用.Equals()
方法,这将实际调查字符串是否相等。此外,既然你只想抓住第一个,为什么不这样做呢:
var language = db.Language.FirstOrDefault(x => x.Designation.Equals(publicLanguage));
这将获取与该语言匹配的第一个,或返回null。在这种情况下,那么你可以只有一个if
语句,如果language
变量实际上为空,那么它将指定英语作为语言。