kastakoorta
سه شنبه 05 اردیبهشت 1391, 13:37 عصر
با سلام خدمت دوستان عزیز .
من یه فرم جستجو دارم که دارم با LINQ مینیسمش .
تو یه قسمت میخوام یه فیلد را با حالت where fieldname in (select ...) بدست بیارم که معادل LINQ ش رو نمیدونم .
یه جدول دارم به نام PersonDevice که در اون با استفاده از کد سیستم مشخص کردم که این قطعه یا سیستم به شخص تحویل شده . حالا در این جستجو میخوام دو حالت تحویل شده یا نشده (موجود در انبار) رو مشخص کنم .
این هم کد من :
LS_DeviceAndSystemsDataContext db = new LS_DeviceAndSystemsDataContext();
var query = from sys in db.Tbl_Systemzs
join c in db.Tbl_Cities
on sys.FK_CTID equals c.CTID
join seller in db.Tbl_Sellers
on sys.FK_SID equals seller.SID
//--
//--
select new { sys.SYSID, sys.SYSAmvalCode, seller.SName, c.CTName, c.CTID, sys.SYSPrice, sys.SYSLoginDate, sys.FK_SSTID, sys.FK_DVLID };
//-- شروع پارامترهای جستجو
if (TextBox_Search_AmvalCode.Text.Trim() != "")
{
query = query.Where(r => r.SYSAmvalCode.Contains(TextBox_Search_AmvalCode.T ext.Trim()));
}
if (TextBox_Search_Seller.Text.Trim() != "")
{
query = query.Where(r => r.SName.Contains(TextBox_Search_Seller.Text.Trim() ));
}
if (DropDownList_City.SelectedValue.ToString() != "")
{
query = query.Where(r => r.CTID == Convert.ToInt32(DropDownList_City.SelectedItem.Val ue.ToString()));
}
if (DropDownList_LoginStatus.SelectedValue.ToString() != "")
{
query = query.Where(r => r.FK_DVLID == Convert.ToInt32(DropDownList_LoginStatus.SelectedI tem.Value.ToString()));
}
if (DropDownList_SystemStatus.SelectedValue.ToString( ) != "")
{
query = query.Where(r => r.FK_SSTID == Convert.ToInt32(DropDownList_SystemStatus.Selected Item.Value.ToString()));
}
if (TextBox_Search_DateStart.Text.Trim() != "" && TextBox_Search_DateEnd.Text.Trim() == "")
{
query = query.Where(r => r.SYSLoginDate == TextBox_Search_DateStart.Text.Trim());
}
if (TextBox_Search_DateStart.Text.Trim() != "" && TextBox_Search_DateEnd.Text.Trim() != "")
{
query = query.Where(r => r.SYSLoginDate.CompareTo(TextBox_Search_DateStart. Text.Trim()) >= 0 && r.SYSLoginDate.CompareTo(TextBox_Search_DateEnd.Te xt.Trim()) <= 0);
}
//-- شرایط نمایش
if (DropDownList_Status.SelectedValue.ToString() != "")
{
// سیستم های موجود در انبار
if (DropDownList_Status.SelectedValue.ToString() == "1")
{
var anbarquery = from anbarsys in db.Tbl_Systemzs
join t in db.Tbl_PersonDevices
on anbarsys.SYSID equals t.FK_SYSID
select new { anbarsys.SYSID };
//query = query.Where();
/*
()
*/
}
// سیستم های تحویلی به اشخاص
if (DropDownList_Status.SelectedValue.ToString() == "2")
{
}
}
if (query.Count() > 0)
{
GridView1.Visible = true;
GridView1.DataSource = query;
GridView1.DataBind();
}
else
{
GridView1.Visible = false;
}
من یه فرم جستجو دارم که دارم با LINQ مینیسمش .
تو یه قسمت میخوام یه فیلد را با حالت where fieldname in (select ...) بدست بیارم که معادل LINQ ش رو نمیدونم .
یه جدول دارم به نام PersonDevice که در اون با استفاده از کد سیستم مشخص کردم که این قطعه یا سیستم به شخص تحویل شده . حالا در این جستجو میخوام دو حالت تحویل شده یا نشده (موجود در انبار) رو مشخص کنم .
این هم کد من :
LS_DeviceAndSystemsDataContext db = new LS_DeviceAndSystemsDataContext();
var query = from sys in db.Tbl_Systemzs
join c in db.Tbl_Cities
on sys.FK_CTID equals c.CTID
join seller in db.Tbl_Sellers
on sys.FK_SID equals seller.SID
//--
//--
select new { sys.SYSID, sys.SYSAmvalCode, seller.SName, c.CTName, c.CTID, sys.SYSPrice, sys.SYSLoginDate, sys.FK_SSTID, sys.FK_DVLID };
//-- شروع پارامترهای جستجو
if (TextBox_Search_AmvalCode.Text.Trim() != "")
{
query = query.Where(r => r.SYSAmvalCode.Contains(TextBox_Search_AmvalCode.T ext.Trim()));
}
if (TextBox_Search_Seller.Text.Trim() != "")
{
query = query.Where(r => r.SName.Contains(TextBox_Search_Seller.Text.Trim() ));
}
if (DropDownList_City.SelectedValue.ToString() != "")
{
query = query.Where(r => r.CTID == Convert.ToInt32(DropDownList_City.SelectedItem.Val ue.ToString()));
}
if (DropDownList_LoginStatus.SelectedValue.ToString() != "")
{
query = query.Where(r => r.FK_DVLID == Convert.ToInt32(DropDownList_LoginStatus.SelectedI tem.Value.ToString()));
}
if (DropDownList_SystemStatus.SelectedValue.ToString( ) != "")
{
query = query.Where(r => r.FK_SSTID == Convert.ToInt32(DropDownList_SystemStatus.Selected Item.Value.ToString()));
}
if (TextBox_Search_DateStart.Text.Trim() != "" && TextBox_Search_DateEnd.Text.Trim() == "")
{
query = query.Where(r => r.SYSLoginDate == TextBox_Search_DateStart.Text.Trim());
}
if (TextBox_Search_DateStart.Text.Trim() != "" && TextBox_Search_DateEnd.Text.Trim() != "")
{
query = query.Where(r => r.SYSLoginDate.CompareTo(TextBox_Search_DateStart. Text.Trim()) >= 0 && r.SYSLoginDate.CompareTo(TextBox_Search_DateEnd.Te xt.Trim()) <= 0);
}
//-- شرایط نمایش
if (DropDownList_Status.SelectedValue.ToString() != "")
{
// سیستم های موجود در انبار
if (DropDownList_Status.SelectedValue.ToString() == "1")
{
var anbarquery = from anbarsys in db.Tbl_Systemzs
join t in db.Tbl_PersonDevices
on anbarsys.SYSID equals t.FK_SYSID
select new { anbarsys.SYSID };
//query = query.Where();
/*
()
*/
}
// سیستم های تحویلی به اشخاص
if (DropDownList_Status.SelectedValue.ToString() == "2")
{
}
}
if (query.Count() > 0)
{
GridView1.Visible = true;
GridView1.DataSource = query;
GridView1.DataBind();
}
else
{
GridView1.Visible = false;
}