Как подобрать набор, используя Linq-2-Sql - PullRequest
1 голос
/ 10 февраля 2009

Я пытаюсь понять, как это сделать, и я в замешательстве. Я уверен, что это что-то простое, что я просто скучаю.

Допустим, у меня есть таблица, представляющая собой набор имен, и я хочу проверить, существует ли подмножество этих имен, например:

var names = new List{ "John", "Steven", "Mary"};
var dbNames = from n in Db.Names
              where n.FirstName == //names ???;

Есть ли в любом случае, чтобы сделать это?

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 февраля 2009

Если вы хотите увидеть, существует ли весь набор в вашей базе данных, вы должны использовать Intersect ().

var names = new List<string> { "John", "Steven", "Mary" };
var dbNames = Db.Names.Select( n => n.FirstName)
                      .Distinct();
bool isSubset = dbNames.Intersect( names ).Count() == names.Count;

Вы хотите, чтобы размер пересечения был таким же, как и второй набор. Если это так, то второй набор является подмножеством первого.

1 голос
/ 10 февраля 2009
where names.Contains(n.FirstName)

Несмотря на то, что вам нужно следить за типами, для которых вы это вызываете, некоторые методы Contains не будут переведены в LINQ-to-SQL. Возможно, вам придется сначала преобразовать его в IEnumerable, IQueryable или что-то в этом роде.

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