在ActiveRecordLinq语句的返回中使用“OR”

时间:2012-07-23 19:03:54

标签: c# asp.net-mvc icollection activerecordlinq

我正在开发一个现有的MP3文件在线库。代码的一部分查找数据库中包含系列标题中某个字符串的文件。

public ICollection<Series> ListTruthAndLifeSeries() {
return (from f in ActiveRecordLinq.AsQueryable<File>()
     where f.SeriesTitle.Contains("Truth and Life")
     orderby f.SeriesTitle
     select new { Name = f.SeriesTitle, Slug = f.SeriesTitleSlug })
                    .ToList().Distinct()
                    .Select(u => Parse(u.Name, u.Slug))
                    .OrderByDescending(u => u.Year)
                    .ThenBy(u => u.Name)
                    .ToList();
    }

这很好用。但我需要添加某种条件,它还会返回系列标题包含“真理和生命”的记录。我试图通过简单地添加

来做到这一点
or f.SeriesTitle.Contains("Truth & Life")

在where子句之后,然后Visual Studio将一堆红色波浪线放入并使该方法中的or语句及其后面的所有内容变灰。这样做的正确语法是什么?更改数据,以便他们都不使用&amp;不是一个实用的选择。

1 个答案:

答案 0 :(得分:0)

我不确定您的实际问题,但解决问题的一种方法(并允许您的查询可扩展)是使用从IEnumerable<String>派生的任何集合,如:

List<string> Titles = new List<string>();
Titles.Add("Truth and Life");
Titles.Add("Truth & Life");

 return (from f in ActiveRecordLinq.AsQueryable<File>()
         where Titles.Contains(f.SeriesTitle)
         orderby f.SeriesTitle
         select new { Name = f.SeriesTitle, Slug = f.SeriesTitleSlug })
       .ToList().Distinct()
       .Select(u => Parse(u.Name, u.Slug))
       .OrderByDescending(u => u.Year)
       .ThenBy(u => u.Name)
       .ToList();

<强>更新

C#不使用or使用||来声明 OR 运算符。

where f.SeriesTitle.Contains("Truth and Life")
      || f.SeriesTitle.Contains("Truth & Life")