با عرض سلام و خسته نباشید
من توی پروژه ی asp.net نیاز دارم داده ها رو از توی sql server بخونم و توی چند تا listview نمایش بدم و نیاز دارم که یک داده به صورت رندوم از پایگاه داده انتخاب کنم .
از روش اول که استفاده کنم برای listview اول درست کار می کنه ولی برای دو یا پند لیست ویو خطا می ده :
string strConnection = "Data Source =Ali-HP;Database=EzBuy;Integrated Security=yes"; using (SqlConnection Connection = new SqlConnection(strConnection)) { String strQuery = "SELECT TOP 1 * FROM product ORDER BY NEWID()"; SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = strQuery; cmd.Connection = Connection; cmd.Connection.Open(); lv1.DataSource = cmd.ExecuteReader(); lv2.DataBind(); cmd.Connection.Close(); cmd.Connection.Dispose(); }
توی این روش من می تونم شرط بذارم که فقط یک محصول رو انتخاب کنه ولی برای یک لیست ویو ، ولی در روش بعد برای هر تعداد لیست ویو جواب می ده ولی نمی تونم شرط بذارم که یک محصول رو به صورت رندم انتخاب کنه
MasterDCDataContext db = new MasterDCDataContext(); var q = db.PrSubTypes; lvKitchen.DataSource = q.Where(c => c.TypeID.ToString() == "1001" ); lvKitchen.DataBind();
توی این روش از data class استفاده کردم
با تشکر از وقتی که برای راهنمایی صرف می کنید
در روش دوم چرا نمیتونید شرط بزارید ؟
میتونید از Take استفاده کنید
lvKitchen.DataSource = q.Where(c => c.TypeID.ToString() == "1001" ).Take(1);
خیلی متشکرم ، بسیار عالی بود .
سوال دیگه اینکه چه گونه می توانم در همین روش ، رکوردی رو که بیشترین مقدار در یک فیلد رو دارد برگردونم ؟
از متد max در همین روش استفتده می کنم ولی خطا دارد
چگونه از Max استفاده کردید ؟
کوئری را قرار دهید تا بررسی کنم
با عرض سلام
MasterDCDataContext db = new MasterDCDataContext(); var p = db.products; lvKitchen.datasource = q.where(c => c.prType == "kitchen").take(1).max(t => t.pesell); lvKitchen.databind();
این کد برای یافتن بیشترین تعداد فروش است ولی خطا دارد
با تشکر
به شکل زیر بنویسید
MasterDCDataContext db = new MasterDCDataContext(); var p = db.products; lvKitchen.datasource = q.where(c => c.prType == "kitchen").OrderByDescending(t => t.pesell).take(1); lvKitchen.databind();
به این صورت نوشتم ، ولی کالا با بیشترین تعداد فروش را انتخاب نمی کند
شاید در ساختار جدوالتون و یا اطلاعات موجود مشکلی وجود دارید
بررسی کنید
حتما بررسی می کنم ، بسیار سپاس گذارم
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)