gpt4 book ai didi

c# - 更改我的对象列表上的顺序

转载 作者:行者123 更新时间:2023-11-30 22:26:15 27 4
gpt4 key购买 nike

我有一个对象列表如下:

ID   Name       PageOrder
1 Home 1
2 Product 2
3 Link 3
4 Help 4

期望:

ID    Name      PageOrder
1 Home 1
3 Link 2
2 Product 3
4 Help 4

我正在用 C# 编写代码,如下所示。但我不认为我的做法不是最佳实践。请指教。

public void OrderUp(int favouriteId)
{
UsFavourite currentFav = db.UsFavourites.FirstOrDefault(m => m.FavouriteID == favouriteId);

// Get favourite by current favourite's order - 1
UsFavourite tempFav = db.UsFavourites.FirstOrDefault(m => m.FavouriteOrder == (currentFav.FavouriteOrder - 1));

if (tempFav != null)
{
//update tempFav
tempFav.FavouriteOrder = currentFav.FavouriteOrder;
Save();

//update currentFav
currentFav.FavouriteOrder = currentFav.FavouriteOrder - 1;
Save();
}

}

public void OrderDown(int favouriteId)
{
UsFavourite currentFav = db.UsFavourites.FirstOrDefault(m => m.FavouriteID == favouriteId);

// Get favourite by current favourite's order + 1
UsFavourite tempFav = db.UsFavourites.FirstOrDefault(m => m.FavouriteOrder == (currentFav.FavouriteOrder + 1));

if (tempFav != null)
{
//update tempFav
tempFav.FavouriteOrder = currentFav.FavouriteOrder;
Save();

//update currentFav
currentFav.FavouriteOrder = currentFav.FavouriteOrder + 1;
Save();
}

}

最佳答案

代码看起来不错。正如保罗所说,你不应该使用 save 两次。我也很想用以下内容删除一些重复

    public void OrderUp(int favouriteId)
{
ChangeOrder(false, favouriteId);

}

public void OrderDown(int favouriteId)
{
ChangeOrder(true, favouriteId);
}
private void ChangeOrder(bool OrderDown, int favouriteId)
{
UsFavourite currentFav = db.UsFavourites.FirstOrDefault(m => m.FavouriteID == favouriteId);

// Get favourite by current favourite's order + 1
UsFavourite tempFav;
if (OrderDown)
{
tempFav = db.UsFavourites.OrderBy(m => m.FavouriteOrder).FirstOrDefault(m => m.FavouriteOrder > (currentFav.FavouriteOrder));
}
else
{
tempFav = db.UsFavourites.OrderByDescending(m => m.FavouriteOrder).FirstOrDefault(m => m.FavouriteOrder < (currentFav.FavouriteOrder));

}
if (tempFav != null)
{
//update tempFav
tempFav.FavouriteOrder = currentFav.FavouriteOrder;

//update currentFav
currentFav.FavouriteOrder = currentFav.FavouriteOrder + change;
Save();
}
}

关于c# - 更改我的对象列表上的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com