Есть ли способ объединить несколько запросов linq, чтобы получить результаты, основанные на выборе пользователя? - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть форма окна, которая выбирает результаты на основе выбора пользователя: результат отображается в таблице данных на основе выбора пользователя.Позвольте мне объяснить подробнее, если пользователь выбрал номер учетной записи, в результате отображаются данные этой конкретной учетной записи.То же самое для поставщиков и даты.

Для этого я использую четыре метода linq для запроса моей базы данных по каждому выбору пользователя:

PS: RepositoryLINQ - это мой класс LINQ (LINQ (LanguageIntegrated Query) - это унифицированный синтаксис запросов в C # и VB.NET, используемый для сохранения и извлечения данных из разных источников. Он интегрирован в C # или VB, тем самым устраняя несоответствие между языками программирования и базами данных, а также предоставляя единый интерфейс запросов дляразличные типы источников данных.)

Я пишу все свои запросы к базе данных в этой части, чтобы у меня было многоуровневое приложение.

public IList<RepositoryLINQ> 
GetAllJoinCmp(DateTime _from, DateTime _To)
{
   try
   {
      var _tbl = from tbl in _db.mytable
      join tblc in _db.joinedtable on tbl.ID equals 
      tblc.ID
      where tbl.Date >= _from 
      && _To >= tbl.Date
      orderby tbl.Date
      select new RepositoryLINQ
      {
         //some attributes
      };

      return _tbl.ToList();
   }
   catch (Exception ex)
   {
      _ErrMsg = ex.Message;
      return null;
   }
}

public IList<RepositoryLINQ> 
GetAllJoinCmpByCmp(DateTime _from, DateTime _To)
{
   try
   {
      var _tbl = from tbl in _db.mytable
      join tblc in _db.joinedtable on tbl.ID equals 
      tblc.ID
      where tbl.Date >= _from
      && _To >= tbl.Date
      && tblc.accountID.Equals(this._accountID)
      orderby tbl.Date
      select new RepositoryLINQ
      {
         //some attributes
      };
      return _tbl.ToList();
   }
   catch (Exception ex)
   {
      _ErrMsg = ex.Message;
      return null;
   }
}

public IList<RepositoryLINQ> 
GetAllJoinCmpBySupp(DateTime _from, DateTime _To)
{
   try
   {
      var _tbl = from tbl in _db.table
      join tblc in _db.joinedtable on tbl.ID equals 
      tblc.ID
      where tbl.Date >= _from
      && _To >= tbl.Date 
      && tbl.SupplierID.Equals(this._SupplierID)
      orderby tbl.Date 
      select new RepositoryLINQ
      {
         //some attributes
      };
      return _tbl.ToList();
   }
   catch (Exception ex)
   {
      _ErrMsg = ex.Message;
      return null;
   }
}

public IList<RepositoryLINQ> 
GetAllJoinCmpByCmpBySupp(DateTime _from, DateTime _To)
{
   try
   {
      var _tbl = var _tbl = from tbl in _db.mytable
      join tblc in _db.joinedtable on tbl.ID equals 
      tblc.ID
      where tbl.Date >= _from
      && _To >= tbl.Date
      && tblc.accountID.Equals(this._accountID)
      && tbl.SupplierID.Equals(this._SupplierID)
      orderby tbl.mytable
      select new RepositoryLINQ
      {
         //some attributes
      };
      return _tbl.ToList();
   }
   catch (Exception ex)
   {
      _ErrMsg = ex.Message;
      return null;
   }
}

С этим методом мой код немного сложный и медленный.Мой вопрос: как я могу присоединиться к этим запросам?Я могу, возможно, использовать левое / правое соединение.Кажется, не сложно, но я не мог понять, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...