任意两个集合List<float> list1,list2,list1,list2均含有NaN值,只许相同序列的数值互相赋值,要让合并两个集合并使两个集合合并后NaN最少。
举例说明
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<float> list1 = new List<float>(); List<float> list2= new List<float>(); List<float> list3 = null; list1.Add(9.30f); list1.Add(float.NaN); list1.Add(float.NaN); list1.Add(float.NaN); list1.Add(9.34f); list1.Add(9.35f); list1.Add(float.NaN); list1.Add(9.37f); list1.Add(float.NaN); list1.Add(9.39f); list2.Add(9.40f); list2.Add(9.30f); list2.Add(9.31f); list2.Add(float.NaN); list2.Add(9.33f); list2.Add(9.34f); list2.Add(9.35f); list2.Add(float.NaN); list2.Add(9.37f); list2.Add(9.38f); list2.Add(9.39f); list3= GetData(list1, list2); Console.WriteLine("集合List1,共{0}条记录",list1.Count); for (int i=0; i < list1.Count; i++) { Console.Write("{0} ",list1[i]); } Console.WriteLine(); Console.WriteLine("集合List2,共{0}条记录", list2.Count); for (int i = 0; i < list2.Count; i++) { Console.Write("{0} ", list2[i]); } Console.WriteLine(); Console.WriteLine("集合List3,共{0}条记录", list3.Count); for (int i = 0; i < list3.Count; i++) { Console.Write("{0} ", list3[i]); } Console.ReadKey(); } private static List<float> GetData(List<float> list1, List<float> list2) { int count = list1.Count >= list2.Count ? list1.Count : list2.Count; float value = 0f; List<float> list3 = new List<float>(); for (int i = 0; i < count; i++) { if (i > list1.Count-1 || float.IsNaN(list1[i])) { value = list2[i]; } else { value = list1[i]; } list3.Add(value); } return list3; } } }