Сообщение Re[2]: Тормоза с запросом от 08.11.2023 1:21
Изменено 08.11.2023 3:00 IT
Re[2]: Тормоза с запросом
Здравствуйте, Sinclair, Вы писали:
S>То есть, ваш код можно было бы починить примерно так:
Можно проще и без заморочек типами:
А если не предполагается больше никаких фильтров, то ещё короче:
S>То есть, ваш код можно было бы починить примерно так:
Можно проще и без заморочек типами:
public Car somefunction()
{
var client = GetClient();
var cars = dbContext.Cars;
cars = (client.Type, client.IsVip()) switch
{
(Type.Common, true) => cars.Where(car =>
car.Country == client.Country &&
car.Model == client.Model &&
car.SomeProperty == Client.SomeProperty),
(Type.Common, false) => cars.Where(car =>
car.Country == client.Country &&
car.Model == client.Model),
(Type.Legal, _) => cars.Where(car =>
car.Country == client.Country &&
car.Model == client.Model &&
car.LegalZip == Client.LegalZip),
_ => throw new ArgumentOutOfRangeException()
}
return cars.FirstOrDefault()
}
А если не предполагается больше никаких фильтров, то ещё короче:
public Car somefunction()
{
var client = GetClient();
var cars = dbContext.Cars.Where(car =>
car.Country == client.Country &&
car.Model == client.Model);
cars = (client.Type, client.IsVip()) switch
{
(Type.Common, true) => cars.Where(car =>
car.SomeProperty == Client.SomeProperty),
(Type.Common, false) => cars,
(Type.Legal, _) => cars.Where(car =>
car.LegalZip == Client.LegalZip),
_ => throw new ArgumentOutOfRangeException()
}
return cars.FirstOrDefault()
}
Re[2]: Тормоза с запросом
Здравствуйте, Sinclair, Вы писали:
S>То есть, ваш код можно было бы починить примерно так:
Можно проще и без заморочек с типами:
А если не предполагается больше никаких фильтров, то ещё короче:
S>То есть, ваш код можно было бы починить примерно так:
Можно проще и без заморочек с типами:
public Car somefunction()
{
var client = GetClient();
var cars = dbContext.Cars;
cars = (client.Type, client.IsVip()) switch
{
(Type.Common, true) => cars.Where(car =>
car.Country == client.Country &&
car.Model == client.Model &&
car.SomeProperty == Client.SomeProperty),
(Type.Common, false) => cars.Where(car =>
car.Country == client.Country &&
car.Model == client.Model),
(Type.Legal, _) => cars.Where(car =>
car.Country == client.Country &&
car.Model == client.Model &&
car.LegalZip == Client.LegalZip),
_ => throw new ArgumentOutOfRangeException()
}
return cars.FirstOrDefault()
}
А если не предполагается больше никаких фильтров, то ещё короче:
public Car somefunction()
{
var client = GetClient();
var cars = dbContext.Cars.Where(car =>
car.Country == client.Country &&
car.Model == client.Model);
cars = (client.Type, client.IsVip()) switch
{
(Type.Common, true) => cars.Where(car => car.SomeProperty == Client.SomeProperty),
(Type.Common, false) => cars,
(Type.Legal, _) => cars.Where(car => car.LegalZip == Client.LegalZip),
_ => throw new ArgumentOutOfRangeException()
}
return cars.FirstOrDefault()
}