PDA

View Full Version : سوال: جستجو در گرید ویو با استفاده از linq



omid_kimia
چهارشنبه 18 اسفند 1389, 09:30 صبح
با سلام
میخوام با linq بین دو مقدار مثلا 100 تا 200 در grid view جستجو کنم.از چه query میتونم استفاده کنم؟؟

ali.rezaei7
چهارشنبه 18 اسفند 1389, 14:15 عصر
سلام. دستورات پايين نتيجه جستجو رو داخل آرايه قرار ميده.

IEnumerable<DataGridViewRow> founddr =
from DataGridViewRow d in dataGridView1.Rows
where Convert.ToInt32(d.Cells[CellIndex].Value) > 20 && Convert.ToInt32(d.Cells[CellIndex].Value) < 50
select d;

DataGridViewRow[] res = founddr.ToArray<DataGridViewRow>();


از اين روش هم مي تونيد استفاده كنيد:
IEnumerable<DataGridViewRow> founddr =
dataGridView1.Rows.Cast<DataGridViewRow>().Where(
d => Convert.ToInt32(d.Cells[CellIndex].Value) > 20
&& Convert.ToInt32(d.Cells[CellIndex].Value) < 50);

DataGridViewRow[] res = founddr.ToArray<DataGridViewRow>();


بجاي CellIndex نام يا شماره انديس ستون موردنظر رو قراربديد.

omid_kimia
چهارشنبه 18 اسفند 1389, 18:11 عصر
ممنون ولی من میخوام مقادیری که کاربر درون دو text box وارد میکنه رو جستجو کنم.ممنون میشم اگه راهنمایی کنید.

ali.rezaei7
چهارشنبه 18 اسفند 1389, 18:28 عصر
ممنون ولی من میخوام مقادیری که کاربر درون دو text box وارد میکنه رو جستجو کنم.ممنون میشم اگه راهنمایی کنید.
نبايد كار دشواري باشه!!شما مقدار دو تكست باكس رو با مقاديري كه من تو كدها قرار دادم، عوض كنيد.به اين صورت:int.Parse(TextBoxName.Text)

omid_kimia
پنج شنبه 19 اسفند 1389, 10:45 صبح
نبايد كار دشواري باشه!!شما مقدار دو تكست باكس رو با مقاديري كه من تو كدها قرار دادم، عوض كنيد.به اين صورت:int.Parse(TextBoxName.Text)


کارمو کامل توضیح بدم بهتره.لطفا بیشتر راهنماییم کنید.

میخوام یه جستجو برا مشاور املاک بنویسم که از قیمت ... تا قیمت ... با linq جستجو کنه و تو grid view نمایش بده فک کنم آرایه احتیاج نباشه.

تو کد بالا میتونم column قیمت بدم که فقط تو قیمت جستجو کنه؟؟

ali.rezaei7
پنج شنبه 19 اسفند 1389, 17:17 عصر
کارمو کامل توضیح بدم بهتره.لطفا بیشتر راهنماییم کنید.

میخوام یه جستجو برا مشاور املاک بنویسم که از قیمت ... تا قیمت ... با linq جستجو کنه و تو grid view نمایش بده فک کنم آرایه احتیاج نباشه.

تو کد بالا میتونم column قیمت بدم که فقط تو قیمت جستجو کنه؟؟

سلام دوست من. اين درخواست شما با اون درخواستي كه تو پست اول گذاشتيد از زمين تا آسمون فرق مي كنه. پس كامل توضيح بديد كه وقت با ارزشتون بيشتر از اين حروم نشه. پست آخرتون هم مشكل رو دوچندادن كرده؛ منظورتون از نشون بده چي هستش؟ اطلاعاتو فيلتر كنه يا سطرهاي پيدا شده رو در حالت انتخاب دربياره؟ اصلا چرا مي خواهيد از linq استفاده كنيد؟ مقدار فيلد موردنظر GirdView را در يك حلقه بررسي كنيد و ... . اين دليل نمي شه چون Linq هست، هميشه و در هر مواردي ازش استفاده كنيم.
لطفا باتوجه به نوشته هام توضيحات كاملي ارايه كنيد تا زودتر به نتيجه برسيد.
موفق باشيد.

omid_kimia
شنبه 21 اسفند 1389, 10:05 صبح
منظورتون از نشون بده چي هستش؟ اطلاعاتو فيلتر كنه يا سطرهاي پيدا شده رو در حالت انتخاب دربياره؟ اصلا چرا مي خواهيد از linq استفاده كنيد؟


سلام
ممنون از پاسخهاتون.

منظورتون از نشون بده چي هستش؟اطلاعاتمو یجا گرفتم داخل grid view نمایش دادم حالا میخوام تو form زیر
67388
با وارد کردن قیمت درون دو text box مقادیری که داخل grid view هست جستجو بشه و اطلاعاتی که بین قیمتهای مثلا 200 تا 300 هست داخل grid view نمایش داده بشه.
یعنی خونه هایی که مثلا قیمتشون بین 200 تا 300 هست اطلاعاتش نشون داده بشه.


اطلاعاتو فيلتر كنه يا سطرهاي پيدا شده رو در حالت انتخاب دربياره؟میخوام سطرهاي پيدا شده رو بهم نشون بده.


اصلا چرا مي خواهيد از linq استفاده كنيد؟دلیل خاصی ندارم فقط آشنایی زیادی با ADO ندارم با linq بیشتر کار کردم.

ممنون از اینکه وقت میزارین و به سوالاتم پاسخ میدین.

ali.rezaei7
شنبه 21 اسفند 1389, 10:53 صبح
براي اينكار نيازي نيست كه از LINQ استفاده كنيد، با يك حلقه ساده هم ميشه اطلاعات رو پيدا كرد:
try
{
int v1 = int.Parse(textBox1.Text);
int v2 = int.Parse(textBox2.Text);

foreach (DataGridViewRow row in dataGridView1.Rows)
{
int value = Convert.ToInt32(row.Cells[0].Value);
if (value < v1 || value > v2)
row.Visible = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

دستورات بالا اطلاعات داخل DataGridView را مورد بررسي قرار ميده و اگر مقداري پيدا شد كه در بازه Text1 و Text2 نبود، اون سطر رو مخفي مي كنه.
البته راه هاي مختلفي براي فيلتر كردن موجود هست. به عنوان نمونه استفاده از DataView كه انجام عمليات فيلترينگ را تنها با يك تابع براتون انجام ميده.

omid_kimia
یک شنبه 22 اسفند 1389, 10:24 صبح
براي اينكار نيازي نيست كه از LINQ استفاده كنيد، با يك حلقه ساده هم ميشه اطلاعات رو پيدا كرد:
try
{
int v1 = int.Parse(textBox1.Text);
int v2 = int.Parse(textBox2.Text);

foreach (DataGridViewRow row in dataGridView1.Rows)
{
int value = Convert.ToInt32(row.Cells[0].Value);
if (value < v1 || value > v2)
row.Visible = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

دستورات بالا اطلاعات داخل DataGridView را مورد بررسي قرار ميده و اگر مقداري پيدا شد كه در بازه Text1 و Text2 نبود، اون سطر رو مخفي مي كنه.
البته راه هاي مختلفي براي فيلتر كردن موجود هست. به عنوان نمونه استفاده از DataView كه انجام عمليات فيلترينگ را تنها با يك تابع براتون انجام ميده.

سلام دوست عزیز
کد بالا فقط اولین مقدار data grid view نشون میده و هیچ مقدار دیگه ای نشون نمیده.
میخوام فقط اطلاعاتی که بین دو عددی که وارد میکم نشون داده بشه.
ممنون از راهنماییتون.