2016-05-24 2 views
0

Я пытаюсь присоединиться к двум таблицам, используя веб-интерфейс mvc4 и linq.Как присоединиться к двум таблицам с помощью LINQ?

Это код класса для таблицы catagory.

public partial class catagory 
{ 
    public int id { get; set; } 
    public string cat_name { get; set; } 
    public Nullable<int> measure_type { get; set; } 
    public Nullable<int> active { get; set; } 
    public Nullable<int> parent_cat { get; set; } 
    public Nullable<int> display_order { get; set; } 
    public string cat_image { get; set; } 
} 

код класса для таблицы продуктов

public partial class product 
{ 
    public int id { get; set; } 
    public string p_name { get; set; } 
    public Nullable<int> price { get; set; } 
    public Nullable<int> catagory_id { get; set; } 
    public Nullable<int> brand_id { get; set; } 
    public Nullable<int> active { get; set; } 
    public Nullable<int> discount_percent { get; set; } 
    public Nullable<int> display_order { get; set; } 
    public Nullable<int> color_id { get; set; } 
    public Nullable<int> seller_id { get; set; } 
    public int selling_price { get; set; } 
} 

Я хочу присоединиться эти две таблицы. Вот код в ProductController.cs файл

public class ProductController : ApiController 
{ 

    public List<product> GetProductByColour(int id) 
    { 
     var query = (from x in db.products.AsEnumerable() 
        join y in db.catagories.AsEnumerable() 
        on x.id equals y.id 
        where x.id.Equals(id) 
        select new product 
        { 
         id = x.id, 
         p_name = x.p_name, 
         price = x.price, 
         catagory_id = y.id, 
         brand_id = x.brand_id, 
         display_order = y.display_order, 

        }).ToList(); 
     return query.ToList(); 
    } 
+1

что является проблемой вы сталкиваетесь? –

+0

Фактически, когда код запускается, и я помещаю отладчик в строку оператора return, он отображается как «Count = 0». –

+0

Я хочу присоединиться к двум таблицам. Это мой запрос –

ответ

1

Вы должны присоединиться как эти таблицы на продукты таблицы имущества catagory_id и категория таблицы Id собственности, потому что в вашей схеме только это выглядит уважительное отношение

и въездного Идентификатор variale может быть любым из таких, как идентификатор продукта, идентификатор категории или может быть color_id. Для меня это выглядит больше color_id.

Для получения более подробной информации о LINQ, пожалуйста, следуйте этим link

public class ProductController : ApiController 
    { 

     public List<product> GetProductByColour(int id) 
     { 
      var query = (from x in db.products.AsEnumerable() 
         join y in db.catagories.AsEnumerable() 
         on x.catagory_id equals y.id 
         where x.id.Equals(id) 
         select new product 
         { 
          id = x.id, 
          p_name = x.p_name, 
          price = x.price, 
          catagory_id = y.id, 
          brand_id = x.brand_id, 
          display_order = y.display_order, 

         }).ToList(); 
      return query; 
     } 
+0

EF и любые ORM заключаются в отношениях. Использование объединений - очень плохая идея, даже если он запустил этот запрос * на этот раз *. Просто используя enumerables, этот запрос будет сканироваться до тех пор, пока не будет добавлено несколько десятков строк. –

+0

Согласен. Поэтому я добавил ссылку на статью linq MSDN. Лучшим подходом будет добавление отношения между сущностями, и тогда вы сможете получить эти объекты в соответствии с вашими потребностями. Я предпочитаю писать этот способ, когда данные очень высокие (более 1000 строк), но я никогда не делаю ienumerable. Вместо этого я предпочитаю делать список после моего настраиваемого объекта. –

+0

Большое спасибо. я получил решение –

Смежные вопросы