如何从第一个表中获取一行,从第二个表中获取其他行

时间:2012-10-23 10:25:26

标签: c# linq

关于我想要显示2个表中的记录的查询,我遇到了一些问题。我需要显示第一个表中的一行和第二个表中的许多行(与第一个表相关。)

如表1

name | id
----------
Shop | 1
Shop | 2

表2

name | id  | shopid
item | 1   |
item | 2   |
item | 3   |

我想从表1中检索单行,从表2中检索相关行。

我有一个项目对象,其中包含两个表的属性,但是我需要显示表1中的单个记录(我已经尝试过使用连接,并且使用其他方式但是从表1中获取更多值(第一条记录包含信息和其他都是空的))。

这是示例代码

public class ItemsInfo
{
    public Shopname { get; set;}
    public item { get; set; }
}

public List<ItemsInfo> ShopItems(int ShopId)
{
    var items = from i in db.items
                join s in db.shops on i.shopid equals s.id
                where s.id == ShopId
                select new ItemsInfo
                           {
                               shopname = s.name,
                           items = i.name
                           }
    return items.Tolist();
}

我希望结果为

Shopname : abcd
items    : item 1
items    : item 2
items    : item 3

1 个答案:

答案 0 :(得分:1)

找到解决方案:)

创建主对象并将第二个表的嵌套对象添加到主对象

这是代码

为商店表创建2个对象1,为项目创建第2个

public class Shop
{
   /// Shop Object
   public string Shop { get; set; }
   public List<Item> Items { get; set; }
}

public class Item
{
   ///Items Object
   public string Name { get; set; }
   public string Picture { get; set; }
}


public List<Item> ItemsList(int id)
{
   var item = from i in DB.Items
   where i.ShopId == id
   select new ShopItem
   {
      Name = i.Name,
      Picture = i.ItemPictures
   };
  return item.ToList();
}


public List<Shop> ShopItems(int ShopId)
{
   var Shopitms = from shop in DB.Shops
   where shop.Id == ShopId && shop.IsActive == true && shop.IsDeleted == false
   select new Shop
   {
      Shop = shop.Name,
      Items = ItemsList(shop.Id)
   }
return ShopItms.ToList();
}

工作正常:)