В LINQ-TO-SQL, как объединить или присоединиться к строке текста не из базы данных? - PullRequest
1 голос
/ 28 ноября 2011

Я пытаюсь расширить свои результаты, присоединяясь к строке текста, а не к данным из таблицы.
Например:

from c in db.customers
join x in (
  select new
  {
    custType = "A"
  }
).Union(
  select new
  {
    custType = "B"
  }
).Union(
  select new
  {
    custType = "C"
  }
)
on 1 equals 1
select new
{
   c.CustomerName,
   x.custType
}

Это предоставит список клиентов три раза, для каждого из которых указан свой custType. Как мне создать эту временную таблицу "x" из примера?

Я попытался указать фактическую таблицу, но если я не вернул ни одной строки из таблицы, выдается ошибка:

Член '<> f__AnonymousTyped7`2 [System.String, System.String] .custType' не поддерживает перевод на SQL

1 Ответ

1 голос
/ 28 ноября 2011

Вы пробовали что-то подобное?

var queryA = from customer in db.customers
             select new {
                 customer.CustomerName,
                 custType = "A"
             };
var queryB = from customer in db.customers
             select new {
                 customer.CustomerName,
                 custType = "B"
             };
var queryC = from customer in db.customers
             select new {
                 customer.CustomerName,
                 custType = "C"
             };

var result = queryA.Union(queryB).Union(queryC);

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

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