使用LINQ从System.Array转换为List <string>,需要保留空值

在我的项目中,我使用互操作连接(.NET 4.5之前的WPF应用程序)将2列转换为易于与List一起工作。 这里的问题在于我正在阅读的两列之一有很多空值。 大多数是空值; 并且select过程决定跳过它们而不是填充一个空值,所以现在剩下2个不等于X excel表单的2个不均匀的列(X在这里是1500左右,所以这个方法相当省时) ;

Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(pathName, 0, true, 5,"", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); Excel.Range range = xlWorkSheet.UsedRange; range = xlWorkSheet.UsedRange.Columns[1]; System.Array myvals = (System.Array)range.Cells.Value; xmlData.AddRange(myvals.OfType<object>().Select(O => O.ToString()).ToList()); range = xlWorkSheet.UsedRange.Columns[2]; myvals = (System.Array)range.Cells.Value; xmlCode.AddRange(myvals.OfType<object>().Select(P => P.ToString()).ToList()); 

任何有关如何保留xmlData中的空值的信息 xmlCode列表将不胜感激。 就我自己而言, 这与select过程有关。 所有值都存在于该范围的System.Arraytypes转换中。

谢谢!

尝试这个:

 xmlData.AddRange(myvals.Cast<object>().Select(O => O == null ? string.Empty : O.ToString()).ToList());