微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LINQ to SQL Not Equals 在 Select 语句中不起作用

如何解决LINQ to SQL Not Equals 在 Select 语句中不起作用

我无法在 LINQ to sql select 语句中使用“不等于”。

我有三个单选按钮,用于我的食谱程序的搜索功能,常规、健康和全部。菜谱有一个名为 Healthy 的字段,访问它的唯一方式是通过程序,并且它唯一可以拥有的是 NULL 或 Healthy。

搜索按钮代码如下。 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 to SQL .dmbl 中将它设置为 Nullable。我在调试程序的不同部分时发现了这一点。

第二,在常规 SQL 查询中也没有任何形式的“不等于”,因为 Healthy 属性只有两个值是 Healthy 和 NULL。我猜 NULL 不是它不能等于的值。但是,一旦我修复了 LINQ to SQL 中的可为空问题,以下操作就起作用了:

 var reclist = from r in dbContext.Recipes where r.Name.Contains(srch) && r.Healthy == null select r;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。