Reputation: 4100
For the following code: I am getting an error mentioned in subject.
var subsidiariesIdList = new List<ID>();
MultilistField multilistField = newsItem.Fields["Recipient Subsidiaries"];
foreach (var item in multilistField)
{
var data = Sitecore.Data.ID.Parse(item.ToString());
if (data != null) // I am getting error here
subsidiariesIdList.Add(data);
}
Here is the complete error text:
The call is ambiguous between the following methods or properties: 'Sitecore.Data.ID.operator !=(Sitecore.Data.ID, Sitecore.Data.ID)' and 'Sitecore.Data.ID.operator !=(Sitecore.Data.ID, Sitecore.Data.ShortID)'
Upvotes: 4
Views: 616
Reputation: 71
Does the code you supplied even compile if you were to comment out the code inside the foreach, the Sitecore MultilistField stores it ids in a pipe separated string so your foreach would have to call GetItems() or at least split the raw value on a '|' to get a collection to iterate over?
However another way/use of the Sitecore ID TryParse method:
var subsidiariesIdList = new List<ID>();
MultilistField multilistField = newsItem.Fields["Recipient Subsidiaries"];
foreach (var item in multilistField)
{
ID id;
if (Sitecore.Data.ID.Parse(item.ToString(), out id))
{
subsidiariesIdList.Add(id);
}
Or you could do:
MultilistField multilistField = newsItem.Fields["Recipient Subsidiaries"];
if (multilistField != null && multilistField.Count > 0)
{
var subsidiariesIdList = multilistField.GetItems().Select(i=>i.ID).ToList<ID>();
}
Enjoy.
P.s. Apologies for the poor formatting, I'm on an iPhone.
Upvotes: -1
Reputation: 4266
You can also use the IsNullOrEmpty
extension method on the ID
type:
var subsidiariesIdList = new List<ID>();
MultilistField multilistField = newsItem.Fields["Recipient Subsidiaries"];
foreach (var item in multilistField)
{
var data = Sitecore.Data.ID.Parse(item.ToString());
if (!ID.IsNullOrEmpty(data))
subsidiariesIdList.Add(data);
}
Upvotes: 1
Reputation: 27142
Just cast null to ID
:
if (data != (ID)null)
The reason why you need to cast is that ID
class has 2 operators defined:
public static bool operator ==(ID id1, ID id2)
public static bool operator ==(ID id1, ShortID id2)
The have different implementation and null can be both ID
or ShortID
. You need to tell compiler which one to use.
Upvotes: 5