此LINQ语句中的ToDictionary()方法调用需要参数。按照目前的情况,ToDictionary部分是红色的,因为缺少更好的技术术语。错误:没有重载接受0个参数。是的,我知道。
我无法将lambda添加到ToDictionary方法调用中,因为Intellisense正在使用其建议覆盖我的lambda。换句话说,如果我输入“ x”,它将替换为XmlReader。啊。
我在有和没有AsEnumerable的情况下都尝试过。我从StackOverflow帖子中借来了大部分代码,但添加了字典部分。
我在某处缺少括号吗?哈利尔!
var props = (from p in _type.GetProperties()
let attr = p.GetCustomAttribute<ExcelExportAttribute>()
where attr != null && attr.ReportId.ToString() == reportID
select new {Prop = p, Att = attr })
.AsEnumerable()
.ToDictionary<PropertyInfo, ExcelExportAttribute>();
严重性代码说明项目文件行抑制状态错误CS1929'IEnumerable <>'不包含'ToDictionary'的定义,最佳扩展方法重载'Enumerable.ToDictionary(IEnumerable,Func,IEqualityComparer)'需要一个接收器类型IEnumerable WFG.UtilityLib.Excel C:\ Users \ kbessel \ source \ repos \ WFG.UtilityLib.Excel \ WFG.UtilityLib.Excel \ ExcelExport.cs 142有效
答案 0 :(得分:1)
您需要完全省略通用类型,如下所示:
.ToDictionary(x => x.Prop, x => x.Att);
原因是扩展方法将不需要两个,而是三个泛型:一个用于“ this”参数,另外两个用于“ regular”参数-否则,因为编译器可以从这些参数派生类型
您可以明确指定所有3种类型,但这几乎没有用,因为它们可以自动派生。