C# 使用IComparable接口对从存储库返回的产品进行排序
我从存储库返回的项目如下所示:C# 使用IComparable接口对从存储库返回的产品进行排序,c#,asp.net-mvc,C#,Asp.net Mvc,我从存储库返回的项目如下所示: 莉莉的厨房好奇的小猫 湿食物 $10.00 孔雀羽毛猫玩具 干粮 8.96美元 伊甸园乡村美食湿猫粮罐 玩具 2.3美元 我尝试在名为“产品”的模型中实现“IComparable接口”: apetshop.Models名称空间 { 公共类产品:IComparable { public int ProductID{get;set;} 公共字符串名称{get;set;} 公共字符串说明{get;set;} 公共十进制价格{get;set;} 公共字符串类别{get;
莉莉的厨房好奇的小猫 湿食物 $10.00 孔雀羽毛猫玩具 干粮 8.96美元 伊甸园乡村美食湿猫粮罐 玩具 2.3美元 我尝试在名为“产品”的模型中实现“IComparable接口”:
apetshop.Models名称空间
{
公共类产品:IComparable
{
public int ProductID{get;set;}
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共十进制价格{get;set;}
公共字符串类别{get;set;}
公共浮动权重{get;set;}
公共字符串Sku{get;set;}
公共int比较(产品其他)
{
返回Name.CompareTo(其他.Name);
}
}
}
然后,在名为“List.cshtml”的视图页面中,我将模型转换为数组,并使用排序方法:
@model IEnumerable<Product>
@{
Array.Sort(Model.ToArray());
}
@foreach (var p in Model.ToArray())
{
<div>
<h3>@p.Name</h3>
@p.Category
<h4>@p.Price.ToString("C")</h4>
</div>
}
@model IEnumerable
@{
Sort(Model.ToArray());
}
@foreach(Model.ToArray()中的var p)
{
@p、 名字
@p、 类别
@p、 价格。ToString(“C”)
}
但它仍然不是按字母顺序排列的:
伊甸园乡村美食湿猫粮罐
湿食物
$10.00
莉莉的厨房好奇的小猫
干粮
8.96美元
孔雀羽毛猫玩具
玩具
2.37美元
我知道可能有一千种方法可以做到这一点,但我想知道我们如何使用IComparable接口来做到这一点?你应该做
var sortedColl=Model.OrderBy(x=>x.Name)编码>然后在foreach循环中使用sortedColl
<代码>foreach(分拣池中的var p)
。当您使用OrderBy LINQ方法时,您不需要实现IComparable
谢谢,非常好。我可以问一下你读过哪本书来解释这些东西吗?这本书是关于学习.Net和c#的特性以及经验的。谷歌是最好的朋友。再次感谢你,你非常擅长c#
@model IEnumerable<Product>
@{
Array.Sort(Model.ToArray());
}
@foreach (var p in Model.ToArray())
{
<div>
<h3>@p.Name</h3>
@p.Category
<h4>@p.Price.ToString("C")</h4>
</div>
}