0

エンティティ モデルにこれらのテーブルがあります

dbo.Options

[OptionsId] [OptionName]
    1        Color
    2        Size
    3        Fit

dbo.ProductAttributes:

[ProdcutAttributeId]   [SKU]       [OptionId]   [Value]
     3001              Shirt_1001    1            Grey
     3002              Shirt_1001    2              S 
     3003              Shirt_1001    3           Regular
     3004              Shirt_1002    1            Black
     3005              Shirt_1002    2             M
     3006              Shirt_1002    3            Slim

dbo.Products:

[ProductId  [ProductName]   [ProductDescription]    [Stock] [ImageURL]  [ProductType]

dbo.ProductSKU:

   ID      SKU       ProductId  Price   ImageURL
   2001    Shirt_1001   1001    12  C:\Users\Administrator\Desktop\Images\LongSleeveShirt.jpg
   2002    Shirt_1002   1001    13  C:\Users\Administrator\Desktop\Images\LongSleeveShirtBlack.jpg
   2003    Shirt_1003   1001    12  C:\Users\Administrator\Desktop\Images\LongSleeveShirtkhaki.jpg
   2004    Shirt_1004   1001    13  C:\Users\Administrator\Desktop\Images\LongSleeveShirtOrange.jpg
   2005    Tshirt_1001  1002    13  C:\Users\Administrator\Desktop\Images\PlainWhiteT.jpg
   2006    Tshirt_1002  1002    12  C:\Users\Administrator\Desktop\Images\PrintedTBlue.jpg
   2007    Tshirt_1003  1002    13  C:\Users\Administrator\Desktop\Images\PrintedTWhite.jpg
   2008    Tshirt_1004  1002    12  C:\Users\Administrator\Desktop\Images\LongSleeveBlackT.jpg

これらは私のエンティティ モデルにあるテーブルです。今度は、productIDas パラメーターを渡す linq クエリを作成しproductid,productname,productdescriptionproductid渡されたのをパラメーターとして取得する必要があります。すべてSkuの製品には、sku が持つ各オプションがあり、imageURlSKUの。

このためのlinqクエリを作成するにはどうすればよいですか?

これが私のモデルの外観です

                 public class ProductItems
                  {
                   public long ProductID { get; set; }
                   public string ProductName { get; set; }
                   public string ProductDescription { get; set; }
                   public string ImageURL { get; set; }
                   public string SKU { get; set; }
                   public long OptionID { get; set; }
                   public string optionName { get; set; }
                   public string Value{ get; set; }
                   public ProductItems()
                    {
                     if (SKUs == null )
                      SKUs = new List<productSKU>();
                     }
                   public List<productSKU> SKUs { get; set; }     
                   public List<options> oPTIONS { get; set; }
                   }

                 public class productSKU
                   {
                  public productSKU()
                  {
                  if (oPTIONS == null)                          
                      oPTIONS = new List<options>();
                    }
                     public string productsku { get; set;}
                    public string SKUImageURL { get; set;}
                    public List<options> oPTIONS { get; set; }
                    }

                 public class options
                    {
                     public long OptionID { get; set; }
                     public string OptionName { get; set;}
                     public string OptionValue { get; set;}
                    }

今、クラスにバインドprodcuname,descriptionしたいと思います。すべての SKU の詳細をクラスにバインドし、それぞれをオプション クラスにバインドする必要があります。prodidProductItemsProductSkuSKuOption

これらの列を最後に取得[ProductID ],[ProductName ],[ProductDescription ],[SKU],[OptionId],[OptionName],[Value],[ImageURL]する必要があります。必要なのはProductName,Description、製品のすべての SKU、すべてのオプション値、および製品の名前です。

これは私がやろうとしていることですが、これをモデルにバインドする方法がわかりません

                    var produ = from PS in products.ProductSKUs
                    join PA in products.ProductAttributes on PS.SKU equals PA.SKU
                    join p in products.Products on PS.ProductId equals p.ProductId
                    join o in products.Options on PA.OptionId equals o.OptionsId
                    where PS.ProductId==ID
                    select new ProductItems()
                          {
                              ProductID=p.ProductId,
                              ProductName=p.ProductName,
                              ProductDescription = p.ProductDescription,

私はここで立ち往生しています。ここから次に何をすべきか、誰かがここで私を助けてくれるか、解決策を提供してくれますか?

4

1 に答える 1

0

私の質問に答えようとした人のおかげで、私はこれに取り組み、解決策を得ました。これを参照したい人は誰でも解決策をここに投稿しています

        private ProductEntities products = new ProductEntities();

    public IEnumerable<ProductItems> GetProductDetail(long ID)
    {       
        ProductItems items=new ProductItems();
        List<ProductItems> objcollection=new List<ProductItems>();   
        var productdetail=from prod in products.Products where prod.ProductId==ID select new {productid=prod.ProductId,description=prod.ProductDescription,productname=prod.ProductName};           
        foreach(var detail in productdetail)
        {
         items.ProductID=detail.productid;
         items.ProductName=detail.productname;
         items.ProductDescription=detail.description;                    
         var prodsku=from prodksu in products.ProductSKUs where prodksu.ProductId==ID select prodksu;           
        foreach(var sku in prodsku)
        {
            productSKU prdsk=new productSKU();
            prdsk.productsku=sku.SKU;
            prdsk.SKUImageURL=sku.ImageURL;
            items.SKUs.Add(prdsk);
            var opt = from PA in products.ProductAttributes
                      join O in products.Options on PA.OptionId equals O.OptionsId
                      where PA.SKU == prdsk.productsku
                      select new { OptionId = PA.OptionId, OptionValue = PA.Value, OptionName = O.OptionName }; 
            foreach(var op in opt)
            {
                options obj=new options();
                obj.OptionID=Convert.ToInt16(op.OptionId);
                obj.OptionName = op.OptionName;
                obj.OptionValue=op.OptionValue;
                prdsk.oPTIONS.Add(obj); 
            }            
            objcollection.Add(items);
        } 
        }      

            return objcollection;         
    }
于 2012-10-06T12:37:52.477 に答える