C# 在Linq中过滤Sql表数据

C# 在Linq中过滤Sql表数据,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我是Linq的新手,我正在使用 DBSearchDataContext db = new DBSearchDataContext(); object q = from b in db.Articles where b.Tags.Contains(val) | b.NewsTitle.Contains(val) | b.EnglishContent.Contains(

我是Linq的新手,我正在使用

DBSearchDataContext db = new DBSearchDataContext();

        object q = from b in db.Articles
                   where b.Tags.Contains(val) |
                   b.NewsTitle.Contains(val) |
                   b.EnglishContent.Contains(val)
                   select b;
我不能排除类别=视频或照片的结果


请帮助我排除价值为“视频”或“照片”的类别。实际上,我们需要有关您的问题的更多信息。如果我们说,您有一个名为categories的表,其中包含ID PK(int)列。您需要搜索为

1-视频

2-照片

DBSearchDataContext db = new DBSearchDataContext();

    var q = (from b in db.Articles
               where 
               b.CategoryId == 1 // This is returns Videos category
               select b).ToList();
我写不出确切的答案,但这会告诉你一个方法

因此,您的查询可以是:

var q = (from b in db.Articles
                   where 
                   (b.Tags.Contains(val) ||
                   b.NewsTitle.Contains(val) ||
                   b.EnglishContent.Contains(val))
                   &&
                   b.CategoryId == 1
                   select b).ToList();

如果您提供更多有关如何查找类别(关联或枚举)的信息,我可以完善我的答案。

实际上,我们需要有关您的问题的更多信息。如果我们说,您有一个名为categories的表,其中包含ID PK(int)列。您需要搜索为

DBSearchDataContext db = new DBSearchDataContext();          
object q = from b in db.Articles                    
           where 
           (b.Tags.Contains(val) ||                    
           b.NewsTitle.Contains(val) ||                    
           b.EnglishContent.Contains(val)) && 
           !( b.SomeCategoryList.Containts("videos") || b.SomeCategoryList.Contains("photos") )
           select b; 
1-视频

2-照片

DBSearchDataContext db = new DBSearchDataContext();

    var q = (from b in db.Articles
               where 
               b.CategoryId == 1 // This is returns Videos category
               select b).ToList();
我写不出确切的答案,但这会告诉你一个方法

因此,您的查询可以是:

var q = (from b in db.Articles
                   where 
                   (b.Tags.Contains(val) ||
                   b.NewsTitle.Contains(val) ||
                   b.EnglishContent.Contains(val))
                   &&
                   b.CategoryId == 1
                   select b).ToList();

如果您提供更多关于如何查找类别(使用关系或枚举)的信息,我可以改进我的答案。

DBSearchDataContext db=new DBSearchDataContext()

DBSearchDataContext db = new DBSearchDataContext();          
object q = from b in db.Articles                    
           where 
           (b.Tags.Contains(val) ||                    
           b.NewsTitle.Contains(val) ||                    
           b.EnglishContent.Contains(val)) && 
           !( b.SomeCategoryList.Containts("videos") || b.SomeCategoryList.Contains("photos") )
           select b; 

可能是这样的……

DBSearchDataContext db=newdbsearchdatacontext()


可能是这样的……

您应该将
|
更改为
|
,这是正确的
条件

要将其排除在外,您需要这样的东西(基于类别在数据库中的位置的假设):


您应该将您的
|
更改为
|
,这是正确的
条件

要将其排除在外,您需要这样的东西(基于类别在数据库中的位置的假设):


我会远离单管“|”或操作员。首先,他们不做逻辑短路。另外,我总是将它们混淆为按位Or运算符。我也会远离单个管道“|”或运算符。首先,他们不做逻辑短路。另外,我总是把它们混淆为按位或运算符。