質問

ASP.NET Web-Formプロジェクトで私が抱えている問題は次のとおりです。

データベースのすべての製品を示すデータリストがあり、各製品には1つ以上の色があります。現時点では、この製品とそのデフォルトの写真を表示するために、このようなクエリを書きますが、その製品に関連する色ではありません。

var query = from p in db.Products
                        from c in db.Pics
                        where c.ProductId == p.ProductId
                        where c.IsDefault == true
                        select new { p.ProductId, p.ProductType, p.Name, p.Number, p.Package, p.Model, p.Size, p.Material, p.MantoLengh, c.PicAddress};

            DataList1.DataSource = query;
            DataList1.DataBind();

関連する色をリスト制御(Datalistやその他のリストコントロールなど)にバインドする方法がわかりません。データリストのコントロール内には、詳細についてはデータベース図のビューがあります。

enter image description here

役に立ちましたか?

解決

このクエリは、私の構文がわずかに出ている場合、事前に謝罪しますが、c#よりもVBです。

        var query = from p in db.Products 
                    select new { p.ProductId, 
                        p.ProductType, 
                        p.Name, 
                        p.Number, 
                        p.Package, 
                        p.Model, 
                        p.Size, 
                        p.Material, 
                        p.MantoLengh, 
                        p.Pics.Where(x => x.IsDefault).Select(x => x.PicAddress).ToList(), 
                        p.Colors.Select(x => x.ColorHex).ToList() };

基本的に、匿名のタイプでは、lambdaを使用してselect()。tolist()を使用して1対多コレクションを取得し、.where()を使用してフィルタリングを実行できます。

それが役立つことを願っています。

編集 - あなたのコメントへの応答:

実際の色を作成するのに最適な賭けのように見えたので、私は16進ストリングを選びました。六角形から色をセラーにするには、参照してください この記事. 。リストのどこに色を追加しますか?

他のヒント

結果をデータリストに縛り付けた後、あなたのデータリストでこのようなことをすることができるはずです$ <%#query.dataitem( "colors")%>

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top