我有一个方法MapResults
,它返回IEnumerable<T>
,我有一个列表temp
。我想添加returnVal
和temp
列表并返回IEnumerable<T>
。
public class RetrieverClass<T, TEntity> : IRetriever<T, TEntity>
where T : BaseFileEntity
where TEntity : class, IEntity<int>
{
public async Task<IEnumerable<T>> TestMethod(IEnumerable<Item> items)
{
var returnVal = MapResults(result).ToList();
List<TestEntity> temp = new List<TestEntity>();
foreach (var testNo in testNos)
{
TestEntity test = CreateTestEntity(testNo);
temp.Add(test);
}
returnVal.AddRange(temp);
}
private IEnumerable<T> MapResults(IEnumerable<TEntity> results)
{
return results.Select(x => _repository.ObjectMapper.Map<T>(x));
}
}
public class TestEntity : BaseFileEntity
{
}
但它在returnVal.AddRange(temp)
行上给出错误。
无法从
System.Collections.Generic.List<TestEntity>
转换为System.Collections.Generic.IEnumerable<T>
答案 0 :(得分:0)
根据@Camilo Terevinto和@mwwills return (IEnumerable<T>)retVal;
的建议给了我一个暗示继续解决我的问题。我发布我的答案,以便它可以帮助其他人。感谢大家的帮助,您的意见确实有所帮助。
public async Task<IEnumerable<T>> TestMethod(IEnumerable<MasterDataFileOperationItem> items)
{
var ids = items.Select(i => i.Id).ToArray().Select(x => x.ToString()).ToArray();
var result = await _repository.GetAll().Where(x => ids.Contains(x.Id)).ToListAsync();
var returnVal = MapResults(result).ToList();
var temp = CreateTestEntity(testNos);
returnVal.AddRange(temp);
return returnVal;
}
public IEnumerable<T> CreateTestEntity(string[] testNos)
{
List<TestEntity> ls = new List<TestEntity>();
foreach (var testNo in testNos)
{
var TestEntity = new TestEntity
{
TestNo = testNo,
};
ls.Add(TestEntity);
}
return (IEnumerable<T>) ls;
}