簡體   English   中英

如何將Long []轉換為IEnumerable <long?>

[英]How can I convert Long[] to IEnumerable<long?>

我有一個例外

無法將類型'long []'隱式轉換為'System.Collections.Generic.IEnumerable <long?>'

我該如何解決這個問題?

我已經嘗試過了,但是沒有用。

AssignedPlayerSites是IList屬性。

IEnumerable<long?> multipleSelectedSites = cmsUser.AssignedPlayerSites.Select(ps => ps.Id).AsEnumerable<long?>();

問題是您不能以這種方式從IEnumerable<long>轉換為IEnumerable<long?> 您可以使用Enumerable.Cast擴展方法執行此操作,例如:

var longArray = new long[] { 1, 2, 3 };
IEnumerable<long?> nullableLongEnumerable = longArray.Cast<long?>();

IEnumerable<long?> multipleSelectedSites =
      cmsUser.AssignedPlayerSites.Select(ps => ps.Id).Cast<long?>();

但是,根據您要執行的操作,這可能更有意義:

IEnumerable<long> multipleSelectedSites = cmsUser.AssignedPlayerSites.Select(ps => ps.Id);

我不知道為什么您需要將long[]轉換為IEnumarable<long?>而不是在開始時創建long?[] 如果已經long?[]則無需轉換即可正常工作long?[]

但是,如果long[]是無法修改的方法的返回類型,則可以使用Enumerable.Cast方法對其進行轉換:

IEnumerable<long?> multipleSelectedSites = cmsUser.AssignedPlayerSites.Cast<long?>();

您可以嘗試這樣。

long[] items = new long[] { 1, 2, 3 };
IEnumerable<long?> castedItems = items.Select<long, long?>(x =>
                                 {
                                     if (object.Equals(x, null))
                                            return null;
                                        else
                                            return x;
                                 });

它的作用是我選擇集合中的項目,評估它是否為null,然后返回所需的值。

不過要注意的一點是,由於數組中的數據類型很long ,因此我沒有檢查它是否為null的問題,因為那對於該數據類型來說是不可能的。

無需鑄造。 只需替換為:

IEnumerable<long?> multipleSelectedSites = cmsUser.AssignedPlayerSites
                                         .Select(ps => ps.Id).AsEnumerable<long?>();

有了這個:

IEnumerable<long?> multipleSelectedSites = cmsUser.AssignedPlayerSites
                                         .Select(ps => new long?(ps.Id)).AsEnumerable();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM