使用 yield 关键字后如何转换
How to cast after using yield keyword
我想在 return 语句中使用 Yield
关键字,但在使用它之后我遇到了转换问题:
Cannot implicitly convert type 'IEnumerable - Mderator' to
'Moderator'. An explicit conversion exists (are you
missing a cast?)
当我删除 Yield
关键字时,我没有错误,并且我不想使用 dynamic
作为类型 return。
这是我的方法:
public IEnumerable<Moderator> GetAllModerators(int id)
{
RtcRepository repoRtc = new RtcRepository(db);
yield return repoRtc.GetByID(id).Collection1.SelectMany(x => x.Collection2.Select(y => y.Moderator));
}
您误解了 yield return 的用法。
yield return 用于从基本类型的多个连续 return 生成 IEnumerable。
例如:
for (int i = 0; i < 100; i++)
yield return i;
将生成一个 IEnumerable。
这里你已经有了一个枚举,所以你根本不需要 yield。
在这种情况下您不需要 yield。试试这个
public IEnumerable<Moderator> GetAllModerators(int id)
{
RtcRepository repoRtc = new RtcRepository(db);
return repoRtc.GetByID(id).Collection1
.SelectMany(x => x.Collection2.Select(y => y.Moderator)).FirstOrDefault();
}
我想在 return 语句中使用 Yield
关键字,但在使用它之后我遇到了转换问题:
Cannot implicitly convert type 'IEnumerable - Mderator' to 'Moderator'. An explicit conversion exists (are you missing a cast?)
当我删除 Yield
关键字时,我没有错误,并且我不想使用 dynamic
作为类型 return。
这是我的方法:
public IEnumerable<Moderator> GetAllModerators(int id)
{
RtcRepository repoRtc = new RtcRepository(db);
yield return repoRtc.GetByID(id).Collection1.SelectMany(x => x.Collection2.Select(y => y.Moderator));
}
您误解了 yield return 的用法。 yield return 用于从基本类型的多个连续 return 生成 IEnumerable。
例如:
for (int i = 0; i < 100; i++)
yield return i;
将生成一个 IEnumerable。
这里你已经有了一个枚举,所以你根本不需要 yield。
在这种情况下您不需要 yield。试试这个
public IEnumerable<Moderator> GetAllModerators(int id)
{
RtcRepository repoRtc = new RtcRepository(db);
return repoRtc.GetByID(id).Collection1
.SelectMany(x => x.Collection2.Select(y => y.Moderator)).FirstOrDefault();
}