在一个.NET Winforms应用程序中,我试图使用实体框架进行查询。我使用Db-Scaffold数据库首先从SQL Server创建了模型,在SQL Server中我创建了所有关系。
现在组合框cb 2将位置作为数据源。
public partial class Location
{
public Location()
{
AktiveSchichten = new HashSet<AktiveSchichten>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<AktiveSchichten> AktiveSchichten { get; set; }
}
cb 2的SelectedValue保存了LocationId。现在我尝试在班次中获取位置等于SelectedValue位置的每个班次。
public partial class Shifts
{
public int Id { get; set; }
public TimeSpan Start { get; set; }
public TimeSpan End { get; set; }
public int Location { get; set; }
public virtual Location LocationNavigation { get; set; }
}
}
我的方法
var shifts = dbContext.AktiveSchichten.Where(a => a.Location = cb2.SelectedValue);
foreach (var shift in shifts)
{
//..
}
为什么我不能用一个int来做这个
var shifts = dbContext.Shifts.Where(a => a.Location == (int)cb2.SelectedValue);
不抛出错误
1条答案
按热度按时间vaj7vani1#
您的 approach 语法不正确:在
Where
子句中有赋值而不是比较
a.Location == cb2.SelectedValue
并且没有将
cb2.SelectedValue
转换为int(与工作语句var shifts =...
相比)。与jdweng的注解相反,只要强制转换有效(
cb2.SelectedValue
的类型为object
,并且包含一个int),强制转换就可以与LINQ一起使用。但是最好在LINQ语句之前赋值:此外:你的
dbContext
上真的有AktiveSchichten
和Shifts
吗?也许你想合并你的命名(德语,英语;复数或单数表示类;不表示Shifts.Location
类示例的属性的类名),以使代码更易于理解。