Могу ли я сделать оператор EF Где (c => c.NameStr == (элемент в списке <string>))? - PullRequest
2 голосов
/ 14 июня 2011

Я хочу сделать оператор Where, но проверить, соответствует ли элемент поля элементу в списке строк, а не просто строке. Мои объекты автоматически генерируются из БД и хранятся в файле .edmx.

//selectedAgencys is a List<string> 

List<v_MapCrimeData> list = ent.v_MapCrimeData
                               .Where(c => c.AgencyName == (element in list selectedAgencys));

Ответы [ 4 ]

11 голосов
/ 14 июня 2011

Вы хотите увидеть, содержит ли список поле, поэтому вы можете использовать Enumerable.Contains

nt.v_MapCrimeData.Where(c => selectedAgencys.Contains(c.AgencyName))

Поскольку вы указали, что используетеLinq to Entities, вы можете попробовать присоединиться.

List<v_MapCrimeData> list = v_MapCrimeData.Join(
            selectedAgencies, 
            c => c.AgencyName,  //key selector for v_MapCrimeData
            a => a,             //key selected for selectedAgencies
            (c, a) => c).ToList(); //result selector (i.e. return the v_MapCrimeData)
2 голосов
/ 20 июля 2011

Попробуйте

List<v_MapCrimeData> list = (from c in ent.v_MapCrimeData 
                            from x in selectedAgencys 
                            where x == c.AgencyName 
                            select c).ToList();
2 голосов
/ 14 июня 2011

Если вам нужно игнорировать регистр,

nt.v_MapCrimeData.Where(c => selectedAgencys.Any(a => a.Equals (c.AgencyName, StringComparison.OrdinalIgnoreCase)) 
1 голос
/ 14 июня 2011

.Where (i => listocheckagainst.Contains (i.valuetoBeChecked))

Редактировать: потратил время на регистрацию в SO, а кто-то ответил

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...