Я сейчас работаю над кроссплатформенным проектом.
Я сталкиваюсь с проблемой при попытке сопоставить модель между WebDataLayer.Models и Shared.Models.
namespace WebDataLayer.Models
{
public class Factory
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Serie { get; set; }
public Guid? AreaId { get; set; }
public virtual ICollection<FactoryHotline> FactoryHotlines { get; set; }
}
public class FactoryHotline
{
public Guid Id { get; set; }
public Guid FactoryId { get; set; }
[Required]
[MaxLength(256)]
public string Caption { get; set; }
[Required]
[MaxLength(256)]
public string Hotline { get; set; }
}
Это модель в разделе:
namespace Shared.Models
{
[DataContract]
public class Factory
{
[DataMember(Name = "id")]
public Guid Id { get; set; }
[DataMember(Name = "areaId")]
public Guid AreaId { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "serie")]
public string Serie { get; set; }
[DataMember(Name = "hotLine1")]
public FactoryHotline Hotline1 { get; set; }
[DataMember(Name = "hotLine2")]
public FactoryHotline Hotline2 { get; set; }
}
public class FactoryHotline
{
[DataMember(IsRequired = true, Name = "Id")]
public Guid Id { get; set; }
[DataMember(Name = "FactoryId")]
public Guid FactoryId { get; set; }
[DataMember(Name = "Caption")]
public string Caption { get; set; }
[DataMember(Name = "Hotline")]
public string Hotline { get; set; }
}
}
Это код в контроллере, где я пытаюсь преобразовать WebDatalayer.Models.Factory
в Shared.Models.Factory
:
public ActionResult Edit()
{
var factories = _factoryService.All().OrderBy(p => p.Name);
List<Shared.Models.Factory> response = new List<Shared.Models.Factory>();
response = factories.Select(k => new Shared.Models.Factory
{
Id = k.Id,
Name = k.Name,
Serie = k.Serie,
Hotline1 = new Shared.Models.FactoryHotline {
Id = k.FactoryHotlines.FirstOrDefault().Id,
Caption = k.FactoryHotlines.FirstOrDefault().Caption,
Hotline = k.FactoryHotlines.FirstOrDefault().Hotline,
FactoryId = k.FactoryHotlines.FirstOrDefault().FactoryId
},
Hotline2 = new Shared.Models.FactoryHotline
{
Id = k.FactoryHotlines.LastOrDefault().Id,
Caption = k.FactoryHotlines.LastOrDefault().Caption,
Hotline = k.FactoryHotlines.LastOrDefault().Hotline,
FactoryId = k.FactoryHotlines.LastOrDefault().FactoryId
},
}).OrderBy(f => f.Name).ToList();
return View("Edit", response);
}
Но linq to entities does not recognize the method lastordefault
, не могу использовать order descending
, потому что я также получаю первый элемент одновременно.
Нужна помощь!