我正在开发一个现有的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;不是一个实用的选择。
答案 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")