2010-01-19 7 views
1

Je cherche simplement à effectuer une requête LINQ pour retourner un groupe d'ID de cours et de titres de cours qui sont en cours d'exécution l'année prochaine. Dans le cadre de cela, je dois effectuer une requête OR car je cherche aussi à renvoyer des données relatives à l'année prochaine qui est tenu comme une chaîne dans ma base de données et est le seul problème que j'ai, donc toute aide serait apprécié.LINQ to SQL exécutant OU sur les chaînes

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" ressemble plus à une date qu'à une année pour moi. :) –

+0

On dirait que "l'année" n'est pas réellement une année - je devine que c'est une "année scolaire", car il s'étend sur deux années civiles. –

+0

Oui, il se réfère à une année scolaire, désolé. – manemawanna

Répondre

5

Réécrivez votre requête en tant que where c.Year == "10/11" || c.Year == "11/12".

+0

Merci, j'avais essayé mais il disait Opérateur '||' ne peut pas être appliqué aux opérandes de type 'bool' et de type 'string'. Cependant, cela fonctionne maintenant, merci. – manemawanna

1

Si vous voulez être en mesure de sélectionner dynamiquement des années alors que vous pourriez faire quelque chose comme ça

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

puis changer le where à

where years.Contains(c.Year) 
1

Il est une erreur de syntaxe de base - en C# vous ne peut pas dire:

"Où l'année est 2010 ou 2011".

Vous devez dire:

"Lorsque l'année est 2010 ou l'année 2011"

Vous réécrivez ceci:

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

que cette :

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