-2

2つのテーブルのレコードを表示したいクエリに関して少し問題があります。最初のテーブルから1行、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番目のテーブルのネストされたオブジェクトをメインオブジェクトに追加しました

ここにコードがあります

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 に答える