How about something like this:
var selectedIngredients = new List<string>() {5, 10, 15};
var recipies = s.Query<Recipe>().Where(p => p.RecipeIngredients.Any(i 
=>selectedIngredients
.Contains(i.Id))).ToList();

And of course you might want insert another select before the "ToList()" 
call if you're only looking to retrieve the Id & Name of the recipe and not 
bring down all the data.

Cheers,
Ted


On Thursday, January 23, 2014 4:06:51 AM UTC+1, Mike Christensen wrote:
>
> I have a table called `Recipes` which contain one recipe per row.  I also 
> have a table called `RecipeIngredients` which contain one ingredient as 
> used by a particular recipe.  Thus, each `Recipe` row has one or more 
> children `RecipeIngredients` rows.
>
> What I'm trying to do is create a query to find all recipes that contain 
> any ingredients in a list of desired ingredients.  For example, show me all 
> recipes that use either flour, eggs, or bananas.
>
> The SQL would look something like this:
>
> SELECT * FROM Recipes r
>    WHERE EXISTS (select 1 from RecipeIngredients where RecipeId = 
> r.RecipeId and IngredientId = ANY (5, 10, 15) limit 1);
>
> However, I'm having a tough time figuring out how to express this as a 
> LINQ query, or using the QueryOver<T> method.  I don't want to hard code in 
> the SQL since this needs to be database agnostic and I want the configured 
> NHibernate dialect to generate the correct code.
>
> Any ideas?
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to