Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# linq c中带参数的搜索查询_C#_Linq - Fatal编程技术网

C# linq c中带参数的搜索查询

C# linq c中带参数的搜索查询,c#,linq,C#,Linq,我需要在NetCore3.0中构建一个带有动态参数的搜索查询 IQueryable<UserDto> query = from user in dbContext.DB_USER join items in dbContext.DB__ITEMS on user.IdItem equals items.IdItem join cars in dbContext.DB_CARS on user.IdCars equals cars.IdItem join statsCar in db

我需要在NetCore3.0中构建一个带有动态参数的搜索查询

IQueryable<UserDto> query = 
from user in dbContext.DB_USER
join items in dbContext.DB__ITEMS on user.IdItem equals items.IdItem
join cars in dbContext.DB_CARS on user.IdCars equals cars.IdItem
join statsCar in dbContext.DB_STATS_CARS on cars.IdCars equals statsCar.Id
select new UserDto
{
    Id = user.Id,
    Name = user.Name,
    Data = user.Data.HasValue ? user.Data.Value.ToUnixTime() : default(long?),
    Lvl = user.L,
    Items = new ItemsUdo
    {
        Id = items.Id,
        Type = items.Type,
        Value = items.Value
    },
    Cars = new CarsDto
    {
        Id = cars.Id,
        Model = cars.model,
        Color = cars.Color
    }

};

它对用户有效。数据无效,但是否正确?如何在linq查询中执行此操作?

执行以下操作:

IQueryable<UserDto> query = 
from user in dbContext.DB_USER
join items in dbContext.DB__ITEMS on user.IdItem equals items.IdItem
join cars in dbContext.DB_CARS on user.IdCars equals cars.IdItem
join statsCar in dbContext.DB_STATS_CARS on cars.IdCars equals statsCar.Id;
select new UserDto
{
    Id = user.Id,
    Name = user.Name,
    Data = user.Data.HasValue ? user.Data.Value.ToUnixTime() : default(long?),
    Lvl = user.L,
    Items = new ItemsUdo
    {
        Id = items.Id,
        Type = items.Type,
        Value = items.Value
    },
    Cars = new CarsDto
    {
        Id = cars.Id,
        Model = cars.model,
        Color = cars.Color
    }

};

if(!string.IsNullOrWhitespace(username))
  query = query.Where(ud => ud.Name == username);

if(!string.IsNullOrWhitespace(itemtype))
  query = query.Where(ud => ud.Items.Any(i => i.Type == itemtype));

if(!string.IsNullOrWhitespace(carmodel))
  query = query.Where(ud => ud.Cars.Any(c => c.Model == carmodel));


等等。这些将像和一样工作;如果指定用户名和项目类型,则只会获得名为该用户名和项目类型的用户,并且该项目类型位于项目列表中的某个位置。。etc

这样做:

IQueryable<UserDto> query = 
from user in dbContext.DB_USER
join items in dbContext.DB__ITEMS on user.IdItem equals items.IdItem
join cars in dbContext.DB_CARS on user.IdCars equals cars.IdItem
join statsCar in dbContext.DB_STATS_CARS on cars.IdCars equals statsCar.Id;
select new UserDto
{
    Id = user.Id,
    Name = user.Name,
    Data = user.Data.HasValue ? user.Data.Value.ToUnixTime() : default(long?),
    Lvl = user.L,
    Items = new ItemsUdo
    {
        Id = items.Id,
        Type = items.Type,
        Value = items.Value
    },
    Cars = new CarsDto
    {
        Id = cars.Id,
        Model = cars.model,
        Color = cars.Color
    }

};

if(!string.IsNullOrWhitespace(username))
  query = query.Where(ud => ud.Name == username);

if(!string.IsNullOrWhitespace(itemtype))
  query = query.Where(ud => ud.Items.Any(i => i.Type == itemtype));

if(!string.IsNullOrWhitespace(carmodel))
  query = query.Where(ud => ud.Cars.Any(c => c.Model == carmodel));

等等。这些将像和一样工作;如果指定用户名和项目类型,则只会获得名为该用户名和项目类型的用户,并且该项目类型位于项目列表中的某个位置。。etc

这是一个LINQ查询。无论您使用查询语法还是扩展方法,您都在创建一个LINQ queryit works。。。但这是正确的吗听起来你回答了自己的问题。您可以根据用户输入动态链接任意多个.Where调用。这是一个LINQ查询。无论您使用查询语法还是扩展方法,您都在创建一个LINQ queryit works。。。但这是正确的吗听起来你回答了自己的问题。您可以根据用户输入动态链接任意多个.Where调用。