[英]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.