Я видел этот подобный вопрос здесь, но не могу понять, как использовать Содержит в декартовом продукте желаемую ситуацию результата:
Исключение LINQ To SQL: локальная последовательность не может использоваться в реализации операторов запросов LINQ to SQL, кроме оператора Contains
Допустим, у меня есть следующее:
var a = new [] { 1, 4, 7 };
var b = new [] { 2, 5, 8 };
var test =
from i in a
from j in b
select new {
A = i,
B = j,
AB = string.Format("{0:00}a{1:00}b", i, j),
};
foreach (var t in test)
Console.Write("{0}, ", t.AB);
Это прекрасно работает, и я получаю дамп примерно так (обратите внимание, я хочу декартово произведение):
01a02b, 01a05b, 01a08b, 04a02b, 04a05b, 04a08b, 07a02b, 07a05b, 07a08b,
Теперь я действительно хочу взять это и декартово произведение снова против идентификатора из таблицы базы данных, которую я имею. Но, как только я добавляю еще одно предложение from, которое вместо ссылки на объекты ссылается на таблицу SQL, я получаю error . Итак, изменив выше что-то подобное, где db определяется как новый DataContext (то есть класс, производный от System.Data.Linq.DataContext):
var a = new [] { 1, 4, 7 };
var b = new [] { 2, 5, 8 };
var test =
from symbol in db.Symbols
from i in a
from j in b
select new {
A = i,
B = j,
AB = string.Format("{0}{1:00}a{2:00}b", symbol.ID, i, j),
};
foreach (var t in test)
Console.Write("{0}, ", t.AB);
Ошибка Я получаю следующее:
Локальная последовательность не может использоваться в реализациях операторов запросов LINQ to SQL, кроме оператора Contains
Очевидно, это связано с неиспользованием Contains, но я не уверен, как будет использоваться Contains, когда я действительно не хочу ограничивать результаты - я хочу использовать декартово произведение для моей ситуации. Любые идеи о том, как использовать Содержит выше и все же дают декартово произведение при объединении базы данных и локальных последовательностей?