Как использовать var более одного раза в linq? - PullRequest
1 голос
/ 25 июня 2010

var ID, x,y

switch(ItemTypeNo)
{

   case ItemType.A : 

    ID = from s in cntx.Tablo1
break;


   case ItemType.B : 

    ID = from s in cntx.Tablo2
break;


   case ItemType.C : 

    ID = from s in cntx.Tablo3
break;

}

Ответы [ 3 ]

3 голосов
/ 25 июня 2010

Вы можете использовать var только для встроенной инициализации, но это не так.Вам нужно было бы ввести ID соответствующим образом, и, поскольку var имеет одиночный тип , который будет работать, только если Tablo1, Tablo2 и Tablo3 имеют одинаковый тип (что маловероятно).

Что вам нужно сделать здесь?

Там - это сценарий, который работает здесь;когда выбирает общий тип из каждого;давайте предположим, что у всех есть первичный ключ int:

IQueryable<int> ids;    
switch(ItemTypeNo)
{    
   case ItemType.A : ids= from s in cntx.Tablo1 select s.Id; break;
   case ItemType.B : ids= from s in cntx.Tablo2 select s.Id; break;
   case ItemType.C : ids= from s in cntx.Tablo3 select s.Id; break;
   default: throw new InvalidOperationException();
}

Однако в общем случае ... не так много.Вы можете ввести ID в качестве не универсального IQueryable, но, честно говоря, это не позволяет вам делать очень много интересных вещей.И dynamic не очень хорошо играет с LINQ (и даже если бы он это сделал, это было бы хаком здесь).

0 голосов
/ 25 июня 2010

вы можете объявить ID как IQueryable, так как это базовый тип для универсального IQueryable<T>

0 голосов
/ 25 июня 2010

Анонимный тип "var" не может быть объявлен без инициализации.После инициализации «var» (после того, как он выведен из использования), его нельзя изменить в течение срока его службы.

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