给定命名的双精度列表,返回具有最低值的变量的名称

时间:2018-01-15 22:00:21

标签: c# wpf visual-studio list

ToList

其他信息:

  • 需要双打。
  • 成分列表是暂定的(目前我正在使用来自多个列表的10种成分)
  • 我正在使用Visual Studio社区:C#:这是我写的一个正在运行的WPF,我试图改进。

目标是确定哪种成分将首先耗尽多少。如你所见,我可以获得价值而不是名称。

2 个答案:

答案 0 :(得分:0)

如果您要查找变量的名称,请尝试nameof(var),在这种情况下string orderId = nameof(orderValue);

否则,您可能需要考虑为您的成分创建自定义类或使用Dictionary<string, double>

编辑: 字典将获得与使用自定义Ingredient类相似的结果。

var items = new Dictionary<string, double>()
{
    { "ingredient1", 2 },
    { "ingredient2", 4 },
    { "ingredient3", 5 },
    { "ingredient4", 1 },
};
var lowestIngredient = items.OrderBy(i => i.Value).FirstOrDefault();
Console.WriteLine($"{lowestIngredient.Key} {lowestIngredient.Value}");

答案 1 :(得分:0)

您需要一种方法将成分的库存水平(您拥有的双重变量)与成分的订单ID相关联(这是您最终想要的结果)。

一种解决方案是使用看起来像这样的Ingredient类:

public class Ingredient
{
    public double InventoryLevel { get; set; }
    public string OrderId { get; set; }
}

然后你可以有一份成分列表,而不是双打,按库存水平订购,并获得最低库存成分。

// make your list of ingredients with order ids, and inventory levels
var ingredients = new List<Ingredient>
{
    new Ingredient {OrderId = "Ingredient1", InventoryLevel = 10.0},
    new Ingredient {OrderId = "Ingredient2", InventoryLevel = 2.0},
    new Ingredient {OrderId = "Ingredient3", InventoryLevel = 15.0},
    new Ingredient {OrderId = "Ingredient4", InventoryLevel = 6.0}
};

// get the ingredient with the lowest inventory level
var lowestStockedIngredient = ingredients.OrderBy(i => i.InventoryLevel ).FirstOrDefault();

string orderId = lowestStockedIngredient.OrderId;