我有一个像
这样的元组列表List<Tuple<int, string>> tuple = new List<Tuple<int, string>>();
tuple.Add(Tuple.Create(1, "10"));
tuple.Add(Tuple.Create(2, "20"));
tuple.Add(Tuple.Create(3, "30"));
tuple.Add(Tuple.Create(4, "None"));
tuple.Add(Tuple.Create(5, "None"));
还有另一个包含id的列表,它实际上是上面元组的第1项。
List<int> list = new List<int>():
列表包含2个值
list.Add(1);
list.Add(4);
我必须将列表的项目与元组的项目1进行比较,并在项目2的值不是"None"
时获取元组的项目2的值。如果第2项的值在这些情况下为none,则仅使用第1项。
答案 0 :(得分:2)
这是LINQ:
tuple
.Where(x => list.Contains(x.Item1))
.Select(x => x.Item2 == "None"
? x.Item1
: int.Parse(x.Item2));
答案 1 :(得分:0)
您还可以进行内部联接:
var result= from e in list
join t in tuple on e equals t.Item1
select t.Item2=="None"?t.Item1:int.Parse(t.Item2);
答案 2 :(得分:0)
如果元组列表中的Item1将是唯一的,我建议使用字典。
var dict = new Dictionary<int, string>();
dict.Add(1, "10");
dict.Add(2, "20");
dict.Add(3, "30");
dict.Add(4, "None");
dict.Add(5, "None");
var list = new List<int>(){ 1, 4 };
Console.WriteLine(string.Join(", ", list.Select(i => dict[i] == "None" ? i.ToString() : dict[i])));
答案 3 :(得分:0)
试试这个。
List<Tuple<int, string>> tuple = new List<Tuple<int, string>>();
tuple.Add(Tuple.Create(1, "10"));
tuple.Add(Tuple.Create(2, "20"));
tuple.Add(Tuple.Create(3, "30"));
tuple.Add(Tuple.Create(4, "None"));
tuple.Add(Tuple.Create(5, "None"));
List<int> list = new List<int>();
list.Add(1);
list.Add(4);
var result = tuple.Join(list, t => t.Item1, l => l,
(t,l) => t.Item2 == "None" ? t.Item1.ToString() : t.Item2)
.ToList();