Вложенный SELECT метода IN в EntityFramework linq

89
12 февраля 2022, 02:10

Есть класс User:

public class User
{
    public string Id {get;set;}
    public string Name {get;set;};
    public string Surname {get;set;};
}

Также, есть класс Order

public class Order
{
    public int Id {get;set;}
    public string UsrId {get;set;}
    public User Usr {get;set;}
    public double bill {get;set;}
}

И контекст данных

public class AppContext : DbContext 
{
    public virtual DbSet<User> Users { get; set; }
    public virtual DbSet<User> Orders { get; set; }
}

В месте вызова определен контекст

var db = new AppContext();

Получаю конкретных пользователей по условию:

var usrs = db.Users.Where(u=>u.Name=="Иван");

Необходимо получить все заявки, которые содержатся в таблице Orders, где Order.UsrId совпадает со списком пользователей usrs

Я знаю как это сделать через обычный SQL запрос:

select * from Orders where Orders.UsrId in (select Id from Users where Name=N'Иван')

Как это сделать через linq запрос? Пробовал что-то типа

var ords = db.Orders.Where(o=>o.Id==..... 
// и вот тут не могу понять как сопоставить множеству Id из выборки usrs
Answer 1

Как-то так:

void Main()
{
    var orders = new List<Order>();
    orders.Add(new Order { Id = 1, UsrId = 1 });
    orders.Add(new Order { Id = 2, UsrId = 2 });
    orders.Add(new Order { Id = 3, UsrId = 2 });
    orders.Add(new Order { Id = 4, UsrId = 3 });
    orders.Add(new Order { Id = 5, UsrId = 1 });
    var subset = new[] { 1, 3};
    var result = orders.Where(x => subset.Any(y => y == x.UsrId));
    result.Dump();
}
// Define other methods and classes here
public class User
{
    public string Id { get; set; }
    public string Name { get; set; }
}
public class Order
{
    public int Id { get; set; }
    public int UsrId { get; set; }
}

Вывод:

READ ALSO
Получить имя свойства в Func C#

Получить имя свойства в Func C#

Как получить имя свойства из Func<T, string>?

135
Может ли геттер и сеттер быть статичным?

Может ли геттер и сеттер быть статичным?

Можно ли задать геттер статичным,но при этом сеттер приватным/публичным? И для чего нужны статичные геттеры и сеттеры?

85
System.FormatException: &quot;Input string was not in a correct format.&quot;

System.FormatException: "Input string was not in a correct format."

Проблема возникает при компиляцииУ меня 3 действия, если пользователь ввёл не число, а буквы, то программа должна выводить "Пожалуйста, выбирайте...

150
Возвращение значения переменной C#

Возвращение значения переменной C#

Доброго времени сутокУ меня есть такой скрипт управления объектом и есть скрипт коллизии

102