Linq для юридических лиц - PullRequest
       10

Linq для юридических лиц

0 голосов
/ 07 августа 2009

Мне было интересно, как я сравнил массив идентификаторов в EF1.0

Я знаю, что в EF4.0 Beta 1 есть методы содержит, так что это будет выглядеть примерно так

int[] associationIds = GetAssociationIds();
from c in Associations where c.AssociationId.Contains(associationIds) select c;

Но как вы делаете эквивалент в EF1.0

Ответы [ 2 ]

1 голос
/ 07 августа 2009

Нет встроенного способа сделать это в EF1. Наиболее часто используемым инструментом для этой задачи является PredicateBuilder .

Решение (с использованием этого инструментария) состоит в создании пользовательского выражения, которое проверяет AssociationId на каждый из идентификаторов в вашем целочисленном массиве. Результирующее выражение выглядит примерно так:

int[] associationIds = GetAssociationIds();

// use PredicateBuilder to build this expression using the contents of
// associationIds:

Expression<Func<Association, bool>> testIds = 
    c => c.AssociationId == 1 || c.AssociationId == 2 || c.AssociationId == 5;

И использовать его:

var matchingAssociations = db.Associations.Where(testIds);
0 голосов
/ 07 августа 2009

Документация предиката описывает способ сделать это без linqkit, поэтому я использовал этот метод, это не очень красиво, но он будет работать до тех пор, пока не появится EF4.0. Приветствия

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