Linq 方法不适用于实现 IEnumerable 的集合

Linq methods not available for a collection implementing IEnumerable

我正在尝试为 Bar class 添加扩展方法。

using System;
using System.ComponentModel;
using DevExpress.XtraBars;
using System.Drawing;
using System.Windows.Forms;
using System.Linq;
using System.Data;

public static class BarExtensions
{
    public static BarItemLink GetBarItemLinkByTag(this Bar bar, object tag)
    {
        BarItemLink foundItemLink = null;
        bool a = bar.ItemLinks.Any(x => x.Item.Tag.Equals(tag));
        ...
    }
}

项目 link 是 属性 类型的 BarItemLinkCollection。这 class 推动了 IEnumerable.

但是当我尝试使用任何 Linq 方法(例如 Any)时,我得到了错误:

'DevExpress.XtraBars.BarItemLinkCollection' does not contain a definition for 'Any' and no extension method 'Any' accepting a first argument of type 'DevExpress.XtraBars.BarItemLinkCollection' could be found (are you missing a using directive or an assembly reference?)

我使用 DevExpress 15.1.7。

问题是我错过了什么。为什么我没有可用于 属性?

的 Linq 方法

我找不到版本 15.1.7 的任何文档,但我认为 IEnumerable 已返回,因此您首先必须使用 Cast<T>()OfType<T> 来获取 IEnumerable<T>(参见 )。

所以我认为你需要写

bool a = bar.ItemLinks.Cast<BarItemLink>().Any(x => x.Item.Tag.Equals(tag))