Фильтрация данных таблицы Sql в Linq - PullRequest
0 голосов
/ 09 февраля 2011

Я новичок в Linq, я M Поиск статей с использованием

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;

Не могу исключить результаты, где категория = видео или фото

Пожалуйста, помогите мне исключить категорию, где значение "видео" или "Фотографии"

Ответы [ 4 ]

1 голос
/ 09 февраля 2011
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 голос
/ 09 февраля 2011

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.category.Contains(videos) && !b.category.Contains(Photographs))
               select b;

Может быть, что-то в этом роде ...

1 голос
/ 09 февраля 2011

На самом деле нам нужна дополнительная информация по вашему вопросу.Если мы скажем, у вас есть таблица под названием категории со столбцами 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();

Если вы дадите больше информации о том, как вы находите Категорию (с отношением или перечислением), я могу уточнить мой ответ.

0 голосов
/ 09 февраля 2011

Вы должны изменить | на ||, что является правильным условием OR.

Чтобы исключить это, вам нужно что-то вроде этого (исходя из предположения о том, где Category находится в вашей БД):

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.Category != "Videos" && b.Category != "Photos")
                  select b;
...