-2

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

如表 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
4

1 回答 1

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();
}

工作正常:)

于 2012-10-23T13:21:01.127 回答