Подтвердить что ты не робот

Внутреннее соединение в linq с объектами

У меня есть объект, называемый Customer, и он имеет три свойства:

public class Customer {
    public virtual Guid CompanyId;
    public virtual long Id;
    public virtual string Name;
}

У меня есть объект, называемый Splitting, и он имеет три свойства:

public class Splitting {
    public virtual long CustomerId;
    public virtual long Id;
    public virtual string Name;
}

Теперь мне нужно написать метод, который получает companyId и customerId. Метод должен возвращать список расщепления, относящийся к конкретному клиенту в компании. Что-то вроде этого:

public IList<Splitting> get(Guid companyId, long customrId) {    
    var res=from s in Splitting 
            from c in Customer 
            ...... how to continue?

    return res.ToList();
}
4b9b3361

Ответ 1

var res = from s in Splitting 
          join c in Customer on s.CustomerId equals c.Id
         where c.Id == customrId
            && c.CompanyId == companyId
        select s;

Использование Extension methods:

var res = Splitting.Join(Customer,
                 s => s.CustomerId,
                 c => c.Id,
                 (s, c) => new { s, c })
           .Where(sc => sc.c.Id == userId && sc.c.CompanyId == companId)
           .Select(sc => sc.s);

Ответ 2

Вы можете найти целую кучу примеров Linq в visual studio. Просто выберите Help -> Samples, а затем разархивируйте образцы Linq.

Откройте решение для образцов linq и откройте LinqSamples.cs проекта SampleQueries.

Ответ, который вы ищете, находится в методе Linq14:

int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
int[] numbersB = { 1, 3, 5, 7, 8 };

var pairs =
   from a in numbersA
   from b in numbersB
   where a < b
   select new {a, b};

Ответ 3

Не уверенно 100% относительно взаимосвязи между этими двумя объектами, но здесь идет:

IList<Splitting> res = (from s in [data source]
                        where s.Customer.CompanyID == [companyID] &&
                              s.CustomerID == [customerID]
                        select s).ToList();

IList<Splitting> res = [data source].Splittings.Where(
                           x => x.Customer.CompanyID == [companyID] &&
                                x.CustomerID == [customerID]).ToList();

Ответ 4

public IList<Splitting> get(Guid companyId, long customrId) {    
    var res=from c in Customers_data_source
            where c.CustomerId = customrId && c.CompanyID == companyId
            from s in Splittings_data_srouce
            where s.CustomerID = c.CustomerID
            select s;

    return res.ToList();
}