我已经准备好将电脑放在房间里了。很抱歉,如果这是另一个问题的重复,但我正在尝试使用某个属性重新排序对象中的项目。具有此新属性的类使用Entity Framework从我们的数据库获取其值,如下所示:
var products = context.Database
.SqlQuery<OrderedProduct>(@"SELECT * FROM dbo.tblProductList").ToList();
查询比这更复杂,但这是一般的想法。像MapDataRow()这样的类中没有需要映射到属性的表列名的虚方法。类语法非常基本,如下所示:
public class Product
{
public Product()
{
MaxAllowed = 1;
Selectable = true;
}
//properties...
}
所有属性都是公共的,没有一个是静态的,也没有方法。我想要订购的房产是:
public int DisplayOrder {get; set;}
这未在数据库中设置;我正在根据来自数据库的其他属性进行设置,如下所示。一旦我设置了DisplayOrder,我想重新排序internetEquipment:
for (int i = 0; i < internetEquipment.Count(); i++)
{
if (internetEquipment.ElementAt(i).CodeDetail == "Modem1")
internetEquipment.ElementAt(i).DisplayOrder = 1;
if (internetEquipment.ElementAt(i).CodeDetail == "Modem2")
internetEquipment.ElementAt(i).DisplayOrder = 2;
if (internetEquipment.ElementAt(i).CodeDetail == "Modem3")
internetEquipment.ElementAt(i).DisplayOrder = 3;
}
var equipmentReordered = internetEquipment.OrderBy(equip => equip.DisplayOrder).ToList();
我得到一个随机排序的列表而不是获得由DisplayOrder排序的List对象,并且所有DisplayOrder属性都是== 0。 经过长时间的解释,这是我的问题:为什么我不能为我的新属性DisplayOrder分配值?谢谢!
答案 0 :(得分:0)
我猜测这是一个很好的答案;我至少想出了如何按照我需要的方式设置属性,尽管可能有更好的解决方案。 Product类中的解决方法:
public int DisplayOrder
{
get
{
if (ServiceCategory == "D")
{
if (CodeDetail == "Modem1")
return 1;
if (CodeDetail == "Modem2")
return 2;
if (CodeDetail == "Modem3")
return 3;
else
return 0;
}
else
{
return 0;
}
}
}