[英]LINQ to SQL Not Equals not working in Select statement
我无法在 LINQ 到 SQL select 语句中使用“不等于”。
我有三个单选按钮用于搜索 function 用于我的食谱程序,常规、健康和所有。 食谱有一个名为“健康”的字段,访问它的唯一方法是通过程序,它唯一可以拥有的是 NULL 或健康。
搜索按钮代码如下。 Healthy and All 工作正常,但 rbRegRecipes 根本不显示任何食谱。
这不是连接,所有字段都来自配方表。
private void bnSearchRec_Click(object sender, EventArgs e)
{
string srch = txtSearchRec.Text;
using (RecipeClassesDataContext dbContext = new RecipeClassesDataContext())
{
if (rbRegRecipes.Checked == true)
{
var reclist = from r in dbContext.Recipes where r.Name.Contains(srch) && (!r.Healthy.Equals("Healthy")) select r;
dgvRecipes.DataSource = reclist;
}
else if (rbHlthRecipes.Checked == true)
{
var reclist = from r in dbContext.Recipes where r.Name.Contains(srch) && (r.Healthy == "Healthy") select r;
dgvRecipes.DataSource = reclist;
}
else
{
var reclist = from r in dbContext.Recipes where r.Name.Contains(srch) select r;
dgvRecipes.DataSource = reclist;
}
}
}
我已经尝试了以下所有方法:
!r.Healthy.Equals("Healthy")
r.Healthy != "Healthy"
!(r.Healthy == "Healthy")
(r.Healthy == null | r.Healthy == "") // the database shows it as NULL, but the datagrid just shows it as blank, so I figured I would cover both bases.
我究竟做错了什么?
原来发生了两件事。
首先是我手动添加了 Healthy 属性,并且我没有在 LINQ 到 SQL.dmbl 中将其设置为 Nullable。 我在调试程序的不同部分时发现了这一点。
其次,在常规的 SQL 查询中也没有任何形式的“不等于”,因为 Healthy 属性的唯一两个值是 Healthy 和 NULL。 我猜 NULL 不是它不能等于的值。 但是,一旦我修复了 LINQ 到 SQL 中的可空问题,以下工作:
var reclist = from r in dbContext.Recipes where r.Name.Contains(srch) && r.Healthy == null select r;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.