C# 从System.Array到List的转换<;字符串>;使用LINQ时,需要保留空值

C# 从System.Array到List的转换<;字符串>;使用LINQ时,需要保留空值,c#,wpf,excel,linq,interop,C#,Wpf,Excel,Linq,Interop,在我的项目中,我使用互操作连接(4.5.NETWPF之前的应用程序)将2列转换为易于使用的列表。这里的问题在于,我正在阅读的两列中有一列都有很多空值;大部分为空;选择过程决定跳过它们,而不是填充一个空值,因此现在我只剩下两个不均匀的列,它们不再代表一个2×X的excel表(这里X大约是1500,所以这种方法相当省时) Excel.Application xlApp=新建Excel.Application(); Excel.Workbook xlWorkBook=xlApp.Workbooks.O

在我的项目中,我使用互操作连接(4.5.NETWPF之前的应用程序)将2列转换为易于使用的列表。这里的问题在于,我正在阅读的两列中有一列都有很多空值;大部分为空;选择过程决定跳过它们,而不是填充一个空值,因此现在我只剩下两个不均匀的列,它们不再代表一个2×X的excel表(这里X大约是1500,所以这种方法相当省时)

Excel.Application xlApp=新建Excel.Application();
Excel.Workbook xlWorkBook=xlApp.Workbooks.Open(路径名,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_项(1);
Excel.Range Range=xlsheet.UsedRange;
range=xlWorkSheet.UsedRange.Columns[1];
System.Array myvals=(System.Array)range.Cells.Value;
AddRange(myvals.OfType().Select(O=>O.ToString()).ToList());
range=xlWorkSheet.UsedRange.Columns[2];
myvals=(System.Array)range.Cells.Value;
AddRange(myvals.OfType().Select(P=>P.ToString()).ToList());
非常感谢您提供有关如何在xmlData | xmlCode列表中保留空值的任何信息。就我自己所能指出的而言;这与选择过程有关。所有值都存在于范围的System.Array强制转换中

谢谢

试试这个:

xmlData.AddRange(myvals.Cast<object>().Select(O => O == null ? 
                                                      string.Empty : 
                                                      O.ToString()).ToList());
xmlData.AddRange(myvals.Cast().Select(O=>O==null?
字符串。空:
O.ToString()).ToList();
试试这个:

xmlData.AddRange(myvals.Cast<object>().Select(O => O == null ? 
                                                      string.Empty : 
                                                      O.ToString()).ToList());
xmlData.AddRange(myvals.Cast().Select(O=>O==null?
字符串。空:
O.ToString()).ToList();
试试这个:

xmlData.AddRange(myvals.Cast<object>().Select(O => O == null ? 
                                                      string.Empty : 
                                                      O.ToString()).ToList());
xmlData.AddRange(myvals.Cast().Select(O=>O==null?
字符串。空:
O.ToString()).ToList();
试试这个:

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


在LINQ中将
null
值转换为
.ToString()
时,您没有遇到任何异常。@RajeevKumar他正在使用类型为
。我不认为null属于object类型。@lewsterin我认为是这样的;还没有找到替代的方法。。你有什么建议吗?谢谢你。@RajeevKumar没有捕捉到任何东西;注意到OfType方法中的ArgNullException子句。@NoxBene只有在
myvals
null
时才会抛出。在LINQ中将
null
值转换为
.ToString()
时,您没有收到任何异常。@RajeevKumar他正在使用
OfType
。我不认为null属于object类型。@lewsterin我认为是这样的;还没有找到替代的方法。。你有什么建议吗?谢谢你。@RajeevKumar没有捕捉到任何东西;注意到OfType方法中的ArgNullException子句。@NoxBene只有在
myvals
null
时才会抛出。在LINQ中将
null
值转换为
.ToString()
时,您没有收到任何异常。@RajeevKumar他正在使用
OfType
。我不认为null属于object类型。@lewsterin我认为是这样的;还没有找到替代的方法。。你有什么建议吗?谢谢你。@RajeevKumar没有捕捉到任何东西;注意到OfType方法中的ArgNullException子句。@NoxBene只有在
myvals
null
时才会抛出。在LINQ中将
null
值转换为
.ToString()
时,您没有收到任何异常。@RajeevKumar他正在使用
OfType
。我不认为null属于object类型。@lewsterin我认为是这样的;还没有找到替代的方法。。你有什么建议吗?谢谢你。@RajeevKumar没有捕捉到任何东西;注意到OfType方法中的ArgNullException子句。@NoxBene,它仅在
myvals
null