У меня есть форма окна, которая выбирает результаты на основе выбора пользователя: результат отображается в таблице данных на основе выбора пользователя.Позвольте мне объяснить подробнее, если пользователь выбрал номер учетной записи, в результате отображаются данные этой конкретной учетной записи.То же самое для поставщиков и даты.
Для этого я использую четыре метода 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;
}
}
С этим методом мой код немного сложный и медленный.Мой вопрос: как я могу присоединиться к этим запросам?Я могу, возможно, использовать левое / правое соединение.Кажется, не сложно, но я не мог понять, как это сделать.