我有两个列表。第一个是类型为string
的列表。第二个是类型为object
的列表。现在我想将这两个列表都放进一个Tuple<string,object>
中。
var List = new(string list1, object list2)[]
我该怎么做?
我不得不创建两个分离的列表,因为我正在序列化对象,如果我一开始就有一个List<Tuple<string,object>>
, 那么序列化就行不通了。两个列表都可能很大,所以也许可以使用foreach循环来处理?
Zip
方法创建这两个列表的一个列表:var lst = new List<string>() { "a", "b" };
var obj = new List<object>() { 1, 2 };
var result = lst.Zip(obj, (x, y) => new Tuple<string, object>(x, y))
.ToList();
List<string> list1 = GetStrings();
List<object> list2 = GetObjects();
var merged = list1.Zip(list2, (a, b) => Tuple.Create(a, b));
(string list1, object list2)
是一个 ValueTuple 结构体,而不是 Tuple 类。如果你想使用值元组(由于元组组件被正确命名,我建议这样做),只需将答案中的new Tuple<string, object>(x, y)
或Tuple.Create(a, b)
替换为(x, y)
或(a, b)
。 - ckuriList<(string yourFieldNameHere1, object yourFieldNameHere)> result = lst.Zip(obj, (x, y) => (x, y)).ToList();
。 - ckuri