0
ここでは、最初にユニークなメインカテゴリ名を取得しようとしています。そのメインカテゴリで使用可能なブランド、その特定のブランドとメインカテゴリのサブカテゴリ。しかし、distinctは動作しておらず、すべての値を返す。ここにモデルのコードがあります。ラムダ式でDistinctを使用してforeachループで使用する
public MvcHtmlString Submenu()
{
var products = _db.Products;
var sb = new StringBuilder();
sb.Append("<ul>");
var mainmenu = products.Select(p => p.MainCategory).Distinct();
if(mainmenu!= null)
{
int i = 0;
foreach (var prods in products)
{
i++;
sb.AppendFormat("<li><a class=\"main-link\" href=\"#\">{0}</a>\n", prods.MainCategory);
var brans = products.Where(p => p.MainCategory == prods.MainCategory).Select(p => p.Brand).Distinct();
if (brans != null)
{
int j = 0;
foreach (var prodss in products)
{
j++;
sb.Append("<ul>");
sb.AppendFormat("<li><a class=\"main-link\" href=\"#\">{0}</a>\n", prodss.Brand);
//var subCats = _db.Products.SqlQuery("Select Distinct(SubCategory) from Product where MainCategory = '" + mainmenu + "' && Brand = '"+brans+"'");
var subCats = products.Where(p => p.MainCategory == prods.MainCategory && p.Brand == prodss.Brand).Select(p => p.SubCategory).Distinct();
if (subCats != null)
{
int k = 0;
foreach (var pods in products)
{
k++;
sb.Append("<ul>");
//sb.AppendFormat("<li><a href=\"#\">{0}</a></li>\n", pods.SubCategory);
sb.Append("</ul>");
}
}
sb.Append("</li>");
sb.Append("</ul>");
}
}
}
sb.Append("</li>");
}
sb.Append("</ul>");
return new MvcHtmlString(sb.ToString());
}
私にあなたがあなたのProductクラスのために等しく、GetHashCodeメソッドをオーバーライドする必要があるが、私はあなただけの製品の名前またはIDでの個別にしたいので、あなたがこのextenssion方法を試すことができると思い
こんにちはパヴァンは[カルロの答え](http://stackoverflow.com/a/4158364/5588347)を参照してください。 –