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))
我正在尝试为 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))