Как использовать выборку конкретного столбца из базы данных и сохранение его в переменной с использованием универсального шаблона репозитория
Я использую эту функцию для извлечения данных из базы данных в моем общем хранилище
public ICollection<TType> GetSpecificColumn<TType>
(Expression<Func<TEntity, bool>> where, Expression<Func<TEntity,
TType>> select) where TType : class
{
return DbSet.Where(where).Select(select).ToList();
}
Но когда я возвращаю список, он выдает ошибку, мой сервисный код
public ICollection<Yarn_Blends> GetYarnBlendIdByYarnId(long yarnId)
{
var myData = _unitOfWorks.Yarn_Repository.GetSpecificColumn(x => x.YarnID == yarnId, x => new { x.YarnBlendID });
var blend = myData.First().ToString();
var yarnBlenIdGet = blend.Remove(0,16);
var blendId = yarnBlenIdGet.Remove(6);
long yarnBlendId = Convert.ToInt32(blendId);
_unitOfWorks.Yarn_Blend_Repository.GetSpecificColumn(x => x.YarnBlendID == yarnBlendId,x => new {x.YarnBlendName});
var myyarnBlendId = _unitOfWorks.Yarn_Blend_Repository.GetSpecificColumn(x => x.YarnBlendID == yarnBlendId,x => new {x.YarnBlendName});
return myyarnBlendId.ToList();
}
Это приводит к ошибке. Невозможно неявно преобразовать тип 'System.Collections.Generic.List' в 'System.Collections.Generic.IEnumerable'. Существует явное преобразование (вам не хватает приведения?)
1 ответ
Я меняю свой код как
public object GetYarnBlendIdByYarnId(long yarnId)
{
var myData = _unitOfWorks.Yarn_Repository.GetSpecificColumn(x => x.YarnID == yarnId, x => new {x.YarnBlendID });
var blend = myData.First().ToString();
var yarnBlenIdGet = blend.Remove(0,16);
var blendId = yarnBlenIdGet.Remove(6);
long yarnBlendId = Convert.ToInt32(blendId);
IEnumerable<Yarn_Blends> list = _unitOfWorks.Yarn_Blend_Repository.GetMany(p => p.YarnBlendID == yarnBlendId);
object myyarnBlendId = _unitOfWorks.Yarn_Blend_Repository.GetSpecificColumn(x => x.YarnBlendID == yarnBlendId,x => new {x.YarnBlendName,x.YarnBlendID});
//foreach(var myYarnData in myyarnBlendId)
//{
// string YarnBlendName = myYarnData.YarnBlendName;
//}
// return list.ToList();
return myyarnBlendId;
}
Теперь работает нормально