PDA

View Full Version : درخواست کمک برای ساخت Query



mreza80
چهارشنبه 03 مهر 1392, 13:36 عصر
]با سلام
دوستان من با سی شارپ و Entity Framwork کار میکنم به یک مشکلی خوردم که راه حل آن اینست که بتوانم کد زیر را به صورت پارامتری تعریف نمایم[/RIGHT]


var Query = (from p in context.GeSe_AccessPackageKarbar
join o in context.GeSe_DefPackage
on p.IdPackage equals o.IdPackage
where
p.vaziat == "فعال"
&
p.IdKarbar == MyIdDefKarbar

select new {p.IdPackage , o.Title });

یعنی خطوط این Query رو مثلا داخل رشته ریخته و باهم جمع کنم


string s1, s2, s3, s4, s5,s6;
s1=" from p in context.GeSe_AccessPackageKarbar ";
s2="join o in context.GeSe_DefPackage ";
s3=" on p.IdPackage equals o.IdPackage where ";
s4="p.vaziat == فعال";
s5= " & p.IdKarbar == MyIdDefKarbar ";

s6=" select new {p.IdPackage , o.Title }";

var Query = (s1+s2+s3+s4+s5+s6);

لطفا اگر راه حلی میداند کمکم کنید خیلی وقت کمی داردم

مهرداد صفا
چهارشنبه 03 مهر 1392, 14:38 عصر
با سلام.
لطفا در مورد هدفتون از این کار بیشتر توضیح دهید.

mreza80
چهارشنبه 03 مهر 1392, 16:50 عصر
دوست عزیز ممنون از بذل توجه حضرتعالی
تصور کنید ما میخواهیم اطلاعات مربوط به کالاهای تعریف شده در جدول کالا ها را نمایش دهیم که بعضی از فیلدهای آن id است که نام آن در جدول دیگر میباشد
ما برای فیلتر کردن باید به گونه ای رفتار کنیم که اگر کاربر داخل کامبو مربوط به فیلتر چیزی را انتخاب کند فیلتر بر اساس Id ایتم انتخابی باشد در غیر اینصورت (یعنی خالی بودن کامبو ) شرط مربوطه را در نظر نگیرد حالا اگر ما 5 عدد کامبو داشته باشیم امکان نوشتن query در همه حالات امکان پذیر نمیباشد
دوست عزیز لازم به توضیح میباشد اگر ما از کد sql استفاده میکردیم کنترل خیلی راحت بود (با جمع کردن رشته و یا ...) ولی روشی برای انجام اینکار با فرمت نوشته شده در بالا پیدا نکردیم در صورت امکان راهنمائی نمائید ممنون

mreza80
چهارشنبه 03 مهر 1392, 16:56 عصر
111188ببخشین تصویر یادم رفته بود

Mahmoud.Afrad
چهارشنبه 03 مهر 1392, 17:19 عصر
با if چک میکنی اگر گزینه ای انتخاب شده بود پشت سر هم روی کوئری قبلی کوئری میزنی.
توی این پست (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1565318&viewfull=1#post1565318) نمونه هست.

مهرداد صفا
چهارشنبه 03 مهر 1392, 19:20 عصر
خواهش می کنم.
علاوه بر روش جناب افراد:

ObjectContext.ExecuteStoreCommand Method (System.Data.Objects) (http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.executestorecomm and.aspx)


EntityCommand Class (System.Data.EntityClient) (http://msdn.microsoft.com/en-us/library/system.data.entityclient.entitycommand.aspx)


How to: Execute a Parameterized Entity SQL Query Using EntityCommand (http://msdn.microsoft.com/en-us/library/bb738684.aspx)


Entity SQL Language (http://msdn.microsoft.com/en-us/library/bb399560.aspx)


How to Get the Native SQL from an EntityCommand - Zlatko Michailov on Entity SQL - Site Home - MSDN Blogs (http://blogs.msdn.com/b/esql/archive/2007/12/04/entitycommand_5f00_totracestring.aspx)


C#‎‎ - How to create LINQ Query from string? - Stack Overflow (http://stackoverflow.com/questions/5139467/how-to-create-linq-query-from-string)



C#‎‎ - Sending LINQ Query to Entity Framework as string - Stack Overflow (http://stackoverflow.com/questions/4244769/sending-linq-query-to-entity-framework-as-string)


Entity Framework Raw SQL Queries (http://msdn.microsoft.com/en-us/data/jj592907.aspx)


سوال: به روز رسانی داده ها با entity framework (http://barnamenevis.org/showthread.php?417168-%D8%A8%D9%87-%D8%B1%D9%88%D8%B2-%D8%B1%D8%B3%D8%A7%D9%86%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-%D8%A8%D8%A7-entity-framework&highlight=TSQl+in+entity)

mreza80
پنج شنبه 04 مهر 1392, 06:43 صبح
دوستان عزیز ممنون ازپاسختان اما مشکل حل نشد عرض کردم من میخواهم ترکیبی از متغیر ها رو کنترل کنم مثلا گروه اصلی ، نام ، شماره فنی ، البته باید در نظر داشت که کاربر تعیین میکنه از کدام یا کدامها استفاده کند بدیهی ست اگر پارمترهای فیلتر خالی باشد باید تمامی جدول را نشان دهد
البته دوستان در نظر داشته باشین که کد گروه اصلی را در جدول کالا من ندارم و از روی ای دی کالا به یک جدول مراجعه و از انجا میخوانم دوستان لطفا راهنمائی نمائید


var Query = (from p in context.Ge_DefKala
where
p.TotalCodeSakhtarSazemani.Contains(param)
&
p.IdGroupAsli == IdGroupAsli
&
p.NameE.Contains (txtFilterNameEkala)
&
p.NameF.Contains (txtFilterNameFkala.Text )
&
p.ShomareFani.Contains (txtFilterShomareFaniKala .Text)
&

orderby p.Ucode ascending
select p);

Hajivandian
پنج شنبه 04 مهر 1392, 08:44 صبح
سلام،

جواب شما دقیقا توی پست آقای محمود افراد اشاره شده، جای تعجب داره که کمی حوصله برای خوندن کاملش به خرج نمیدید!
در کل برای جستجو های ترکیبی باید این نکته رو بدونید که لینک به شما این قابلیت رو میده که روی کوئری خودتون مجددا کوئری بزنید. مثال:

var query = from p in context.Ge_DefKala
select p;

if (combobox1.SelectedIndex != -1)
{
query = query.Where(p => p.TotalCodeSakhtarSazemani.Contains(param));
}

if (combobox2.SelectedIndex != -1)
{
query = query.Where(p => p.IdGroupAsli == IdGroupAsli);
}

if (combobox3.SelectedIndex != -1)
{
query = query.Where(p => p.NameE.Contains(txtFilterNameEkala));
}

...

var result = query.ToList();