Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用IComparable接口对从存储库返回的产品进行排序_C#_Asp.net Mvc - Fatal编程技术网

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>
}