tags:

views:

25

answers:

1

My apologies in advance for the haziness here, but I find this problem somewhat difficult to explain (although I'm sure it's a fairly common problem/solution). I want to execute a query selecting rows from a table joined with another table where the other table is the "many" in the one-to-many relationship. But one of my where clauses needs to check the many part for a particular condition. Here's the code with the part I don't understand filled in with pseduocode.

var query = 
    from program in db.AcademicPrograms
        where program.ProgramTitle.StartsWith(Keyword.Text) || 
              program.ProgramDeptIDName.DeptName.StartsWith(Keyword.Text) || 
              program.AcademicProgramKeywords.Contains(
                                     <A value that starts with Keyword.Text>)
        select
            new
              {
                 program.ProgramTitle,
                 program.ProgramHomePage,
                 program.ProgramCode,
                 program.ProgramType
              };
+2  A: 

This should work for you:

program.AcademicProgramKeywords.Any(apk => apk.Field.StartsWith(Keyword.Text))

Effectively, this says:
Select AcademicPrograms where any of its AcademicProgramKeywords .Field properties starts with Keyword.Text.

I'll leave it to you to resolve .Field to the correct property.

Marc
This works! Thanks!!
Kyle