Повторно использовать выберите новый объект в операторе linq - PullRequest
1 голос
/ 07 ноября 2019

Ниже мой код linq, и он работает. Мой вопрос заключается в том, как я могу «повторно использовать» эти части, новый ContactResponse и новый AddressResponse в функции, чтобы повторно использовать его в другом запросе?

var queryset = (
            from a in _repoWrapper.Workshop.FindAll()
            where (a.IsActive == true && a.Entity.EntityType.Code == Global.EntityTypeServiceCenterCode)
            select new ServiceCenterResponse
            {
                Id = a.Id,
                Name = a.Name,
                EntityId = a.EntityId,
                Contacts = a.WorkshopContacts.Select(p => new ContactResponse
                {
                    Id = p.Contact.Id,
                    Type = p.Contact.ContactType.Description,
                    Code = p.Contact.ContactType.Code,
                    Value = p.Contact.Value
                }).ToList(),
                Addresses = a.WorkshopAddresses.Select(p => new AddressResponse
                {
                    Id = p.Address.Id,
                    AddressType = p.Address.AddressType.Code,
                    StreetLine1 = p.Address.StreetLine1,
                    StreetLine2 = p.Address.StreetLine2,
                    City = p.Address.City,
                    State = p.Address.State,
                    PostCode = p.Address.PostCode,
                    Country = p.Address.Country,
                    Longitude = p.Address.Longitude,
                    Latitude = p.Address.Latitude,
                    Others = p.Address.Others
                }).ToList()
            }
        );

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Если я правильно понимаю ваш вопрос, то попробуйте это:

 Func<WorkshopContact, ContactResponse> contactResponseProjection= p => new ContactResponse
 {
   Id = p.Contact.Id,
   Type = p.Contact.ContactType.Description,
   Code = p.Contact.ContactType.Code,
   Value = p.Contact.Value
 };

И используйте:

...
  Contacts = a.WorkshopContacts.Select(contactResponseProjection).ToList(),
...

1 голос
/ 08 ноября 2019

Linq имеет параметр типа Func в методе Select. Это означает, что вы можете передать ему метод. Позвольте мне попытаться сделать пример.

List<int> list = new List<int> { 1, 2, 3 };
list.Select(AddOne);

, где AddOne - это метод, который вы можете объявить, и он должен иметь параметр типа int и возврат того, что вы хотите вернуть. например.

public int AddOne(int value)
{
    return value + 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...