Вопрос по linq-to-sql, lambda, entity-framework, code-first – Как объединить несколько столов?

6

У меня есть следующие занятия. У меня есть объектvar Описание класса. Я хочу выбрать Баланс, связанный с Клиентом, указанный вvar объект с использованием выражения Linq to Sql или Lambda. Как объединить эти таблицы, чтобы получить баланс из таблицы счетов?

public class Description
    {
        public int DescriptionID { get; set; }

       // Attributes

        public int ClientID { get; set; }

        [ForeignKey("ClientID")]
        public virtual Client Client { get; set; }


    }

public class Client
    {
        public int ClientID { get; set; }

       // Attributes

        public int UserID { get; set; }

        [ForeignKey("UserID")]
        public virtual User User { get; set; }

    }

 public class User
    {
        public int UserID { get; set; }

       // Attributes

     }

 public class Account
    {

        public int AccountID { get; set; }

        [Required, Column("Balance"), Display(Name = "Account Balance")]
        public double Balance { get; set; }


        public int UserID { get; set; }

        [ForeignKey("UserID")]
        public virtual User User { get; set; }

    }

Ваш Ответ

1   ответ
11

Вы можете попробовать это:

var balance = (from a in context.Accounts
               join c in context.Clients on a.UserID equals c.UserID
               where c.ClientID == yourDescriptionObject.ClientID
               select a.Balance)
              .SingleOrDefault();

Или - если у вас есть толькоDescriptionID:

var balance = (from a in context.Accounts
               join c in context.Clients on a.UserID equals c.UserID
               join d in context.Descriptions on c.ClientID equals d.ClientID
               where d.DescriptionID == yourDescriptionID
               select a.Balance)
              .SingleOrDefault();

(Или жеFirstOrDefault() или жеToList() или жеSum()? Потому что ваша модель позволит, чтобы клиенты / описания были связаны с несколькими учетными записями ...)

Похожие вопросы