【发布时间】:2019-04-28 13:12:51
【问题描述】:
我目前正在开发一个 .NET 4.7.2 应用程序。我需要将 2 个列表合并为 1 个并替换某些元素。我想知道实现这一目标的最佳方法是什么。
问题如下:我有一个给定的水果列表:
Fruits
------
Apple
Banana
Orange
Lemon
我需要在我的结果列表中使用上面的 Fruits,它是使用下面的 2 个列表创建的。列表模板和选择仅包含字符串值。 A、B... 在选择和模板中的顺序完全相同。在模板中,我只是将一些水果占位符添加到选择中。
我的 2 个列表如下所示:
Template | Selection
---------------------
A | A
Fruit | Orange
D | D
Fruit | Lemon
C | C
Fruit | B
B |
目标是创建一个基于模板的结果列表。我需要用 Selection 中的水果替换 Fruit 占位符。如果选择中没有水果,例如在 C 和 D 之间,我需要从水果列表中取出第一个可用的水果。
当我创建结果时,我从 Fruits 中剪切了 Orange 和 Lemon - 我只是从 Fruits 列表中选择第一个可用的水果来替换模板列表中的 Fruit 占位符,例如首先我从水果中切下橙子和柠檬,然后我选择苹果,因为它仍然可用。
结果如下所示:
Result
------
A
Orange
D
Lemon
C
Apple
B
合并这些列表非常棘手。
我的班级 FruitGarden 是这样的:
public class FruitGarden
{
public List<string> Fruits { get; set; } // Apple, Banana, Orange, Lemon
public List<string> PrepareFruits(List<string> Template, List<string> Selection)
{
var result = new List<string>();
var cntSelection = 0;
for (var cntTemplate = 0; cntTemplate < Template.Count; cntTemplate++){
// here I need to replace the Fruit in my Template list with an available Fruit from Temporary or from Fruits
do
{
}(cntSelection< Temporary.Count)
}
return result;
}
}
你有什么建议,在 C# 中,将 2 个列表合并为 1 个的好方法是什么?
【问题讨论】:
-
原始列表中的“Apple”和“Banana”发生了什么?你从哪里得到 A-D?
-
我对你所追求的逻辑感到非常困惑。你说你需要将两个列表合并在一起,其中一个是第一个“水果”列表,但另一个是计算出来的,somewhere。你能提供这个方法的确切输入和输出吗?
-
显示一些代码。
temporary列表中的空项如何表示?它们是否保证长度相同?你看过 LINQZip吗?到目前为止,您尝试过什么? -
你读过How to Ask吗?
-
模板和选择中的随机字符串是否总是相同的?
标签: c# .net list sorting merge