2010-01-19 51 views
1

我只是想执行一个LINQ查询来返回一组明确运行的课程标识和课程标题。作为这个的一部分,我需要执行一个OR查询,因为我也希望返回与下一年有关的数据,这些数据在我的数据库中作为一个字符串保存,这是我遇到的唯一问题,所以任何帮助都是赞赏。LINQ to SQL在字符串上执行或操作

var result = (
    from a in Offering 
    join b in Courseinfo on a.CourseID equals b.CourseID 
    into temp 
    from c in temp 
    where c.Year == "10/11" || "11/12" 
    select new { c.CourseID, c.CourseTitle }).DefaultIfEmpty(); 
+0

“10/11”对我来说更像是一个日期而不是一年。 :) – 2010-01-19 10:29:22

+0

它看起来像“年”实际上不是一年 - 我猜这是一个“学年”,因为它跨越两个日历年。 – 2010-01-19 10:39:09

+0

是的,它指的是一个学年,对不起。 – manemawanna 2010-01-19 11:07:16

回答

5

将您的查询重写为where c.Year == "10/11" || c.Year == "11/12"

+0

谢谢,我曾试过这个,但它是在说运营商'||'不能应用于'bool'类型和'string'类型的操作数。但现在它的工作非常感谢。 – manemawanna 2010-01-19 11:06:33

1

如果你希望能够动态地选择年,那么你可以做这样的事情

var years = new List<string>{"1989", "1994", "2004", "2007"}; 

,然后更改where

where years.Contains(c.Year) 
1

这是一个基本的语法错误 - 在C#不能说:

“哪里是2010年或2011年”。

你不得不说:

“凡年是2010年,或年是2011”

所以你重写这个:

where c.Year == "10/11" || "11/12" 

,因为这:

where c.Year == "10/11" || c.Year == "11/12"