LINQ to Entities - предложение where..in с несколькими столбцами

Я пытаюсь запросить данные формы с помощью LINQ-to-EF:

class Location {
    string Country;
    string City;
    string Address;
    …
}

путем поиска местоположения по кортеж (Страна, Город, Адрес). Я пробовал

var keys = new[] {
    new {Country=…, City=…, Address=…},
    …
}

var result = from loc in Location
             where keys.Contains(new {
                 Country=loc.Country, 
                 City=loc.City, 
                 Address=loc.Address
             }

, но LINQ не хочет принимать анонимный тип (который, как я понимаю, является способом выражения кортежей в LINQ) в качестве параметра для Contains ().

Есть ли «хороший» способ выразить это в LINQ, имея возможность выполнить запрос в базе данных? В качестве альтернативы, если бы я просто перебирал ключи и объединял запросы с помощью Union (), это было бы плохо для производительности?

20
задан millimoose 2 August 2011 в 14:24
поделиться