关于我想要显示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
答案 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();
}
工作正常:)