无法从用法推断 SelectMany [重复]

2024-02-20

当我尝试编译代码时出现以下错误:

方法的类型参数 'System.Linq.Enumerable.SelectMany(System.Collections.Generic.IEnumerable, 系统.Func>)' 无法从用法推断。尝试指定类型参数 明确地。

        List<RowEntry> entries = ...
        List<RowArgument> arguments = ...

        var argumentsVal = entries.SelectMany((RowEntry entry) =>
            (IEnumerable<RowArgumentVal>)arguments.SelectMany((RowArgument arg) => 
            new RowArgumentVal()
            {
                Action = "X" 
                , EntryID = entry.ID
                , ArgID = arg.ID
                , Val_BIT = true
                , Val_DATE = new DateTime(2014, 01, 04)
                , Val_DATETIME = new DateTime(2014, 01, 04)
                , Val_DECIMAL = 4.6M
                , Val_INT = 88
                , Val_TIME = new TimeSpan(6, 0, 0)
            }
        ).Cast<RowArgumentVal>()).Cast<RowArgumentVal>().ToList();

我不明白如何进一步“输入”这个......


问题是内在SelectMany在那里不适用,你可能的意思是Select.

var argumentsVal = entries.SelectMany(entry =>
    arguments.Select(arg => new RowArgumentVal())).ToList();

Each entry将被映射到IEnumerable<RowArgumentVal>根据arguments.

想象一下外部SelectMany是一个简单的Select,它会生成List<IEnumerable<RowArgumentVal>>。但因为它是SelectMany,它将结果“扁平化”为一个简单的List<RowArgumentVal>.

The SelectMany方法期望映射到IEnumerable<T> - not T。您的原始代码在以下情况下有效:RowArgumentVal恰好实施了IEnumerable<T>接口,我认为情况并非如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法从用法推断 SelectMany [重复] 的相关文章

随机推荐