2014-01-14 30 views
0

在我的項目中,我使用互操作連接(4.5之前的.NET WPF應用程序)將2列轉換爲易於使用List的。這裏的問題在於我正在閱讀的兩列中有一列有很多空值;大多數是空值;並且選擇過程決定跳過它們而不是填充一個空值,所以現在我剩下2個不等於X excel表單的2個不平坦列(X在這裏大約是1500,所以這個方法相當省時) ;從System.Array轉換爲列表<string>使用LINQ,需要保留空值

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列表將不勝感激。就我自己而言,它與選擇過程有關。所有值都存在於該範圍的System.Array類型轉換中。

謝謝!

+0

你沒有得到任何的異常,而在'LINQ()轉換'null'值'的ToString。 –

+0

@RajeevKumar他正在使用'OfType '。我不認爲null是類型對象。 –

+0

@LewsTherin我認爲這是事實;沒有找到替代壽..你有什麼建議嗎?謝謝。 – NoxBene

回答

3

試試這個:

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

這很好用!非常感謝@ gomi42。 – NoxBene

相關問題