PDA

View Full Version : بدست آوردن نام های تکراری



bitcob589
جمعه 20 دی 1392, 11:24 صبح
با سلام
چگونه با linq دستور سلکتی نوشت که اگر محتوای فیلدهای دیتابیس با یکدیگر یکسان بودند با یک اخطار متوجه تکراری بودن رکود شد و نمایش رکودهای تکرار در یک گرید ویو

Mansoor92
جمعه 20 دی 1392, 12:01 عصر
سلام

برای مشاهده فیلدهای تکراری اگر اطلاعات کلی در یک گریدویوو باشه و بخاید فیلدهای تکراری رو در یک گریدویوو دیگه نمایش بدید ...توی رویداد SelectedChange دیتاگرید اول اینطوری مینویسید....


int es = Int32.Parse(dgvdar.CurrentRow.Cells[1].Value.ToString());
var q = from c in db.tbl_Table
where c.Eshterak == es
select c;
dgvnama.DataSource = q.ToList();

bitcob589
جمعه 20 دی 1392, 12:09 عصر
بگذارید واضح تر توضیح دهم
یک دستور سلکت در نظر دارم بنویسیم در نظر دارم در زمان سلکت شدن اطلاعات از دیتابیس اگر رکودهای تکراری وجود داشت در گرید ویو نمایش داده شود و اگر اطلاعات تکراری وجود نداشت کارهای ذیگری انجام شود
یعنی در زمان سلکت شدن بررسی شود که آیا رکود تکراری وجود دارد

Mahmoud.Afrad
جمعه 20 دی 1392, 12:32 عصر
سوالت ناقصه. بهتره یک مثال بزنی و ساختار جدولت رو هم بگی.

bitcob589
جمعه 20 دی 1392, 12:56 عصر
یک دیتابیس دارم به صورت زیر
115135
در دیتابیس در فیلد name دوبار اسم علی در دو رکورد ثبت شده است در نظر دارم اگر در زمان سلکت اطلاعات در فیلد name اطلاعات شبیه هم در بیش از یک رکود ثبت شده بود تکرار شده بود رکودهای تکراری نمایش دهد و اگر اطلاعات تکراری نبود کارهای دیگری انجام دهذ
مثل عکس جدول اگر بیش از یک بار اسم علی در فیلد name دیتابیس ثبت شده بود رکودهای که اسم علی دارند در گرید ویو نمایش داده شود

vapa_71
جمعه 20 دی 1392, 13:03 عصر
سلام دوست عزیز من از این کد استفاده میکنم

var db = new linqDataContext();
bool isRegistered = db.Table1s.Any(i => i.name == textBox1.Text);
if (!isRegistered)
{
Table1s نام جدول
name فیلد مورد نظر
textBox1.Text که مشخصه تکس باکسی که اسم وارد میشه
بعد از if هم دستورات ثبت رو بذار
و بعدش else بذار و پیغام نمایش بده که اسم تکراریه

اگه واسه ثبت اطلاعات این کار رو میخوای انجام بدی نیاز نیست در دیتاگرید نمایش بدی !!!

bitcob589
جمعه 20 دی 1392, 13:21 عصر
سلام دوست عزیز من از این کد استفاده میکنم

var db = new linqDataContext();
bool isRegistered = db.Table1s.Any(i => i.name == textBox1.Text);
if (!isRegistered)
{
Table1s نام جدول
name فیلد مورد نظر
textBox1.Text که مشخصه تکس باکسی که اسم وارد میشه
بعد از if هم دستورات ثبت رو بذار
و بعدش else بذار و پیغام نمایش بده که اسم تکراریه

اشتباه می کنید در کدی که شما گذاشته اید مقدار تکس باکس با دیتابیس مقایسه شود در نظر دارم درون خود دستور سلکت همه رکودها با هم مقایسه کند اگر دیتابیس یک فیلد با نام name وجود داشت خود دستور سلکت تمام فیلد رکودها با هم مقایسه کند اگر از یک فیلد name یک رکورد در رکودهای دیگر وجود داشت آن رکود نمایش داد شود مثل عکس که در پست 5 گذاشتم خود دستور بیایید بررسی کند نام علی در رکودهای دیگر وجود دارد اگر وجود دارد آن رکودها نمایش دهد
یعنی خود دستور سلکت بررسی کند از مقدار name که در رکود دوم وجود دارد در دیگر رکوردها وجود دارد یا خیر

ashkan1234
جمعه 20 دی 1392, 13:35 عصر
بفرمایید عزیزدل بلادل:
using ( var db=new LINQ())
{
var sel = db.TBL_Name.Where(c => c.Name.Equals(c.Name));
DGV.DataSource = sel;
}

bitcob589
جمعه 20 دی 1392, 13:42 عصر
بفرمایید عزیزدل بلادل:
using ( var db=new LINQ())
{
var sel = db.TBL_Name.Where(c => c.Name.Equals(c.Name));
DGV.DataSource = sel;
}

دستور بالا توضیحات پستهای قبلی پیاده سازی نکرد

ashkan1234
جمعه 20 دی 1392, 13:52 عصر
والا توضیحات شما این بود که رکورد های تکراری نمایش داده بشه!
دستوری هم که قرار دادم دقیقا رکوردهای که مثلا نام آنها علی است رو در گریدویو نمایش میده!
دیگه چی میخوایید من نمیدونم!

Mahmoud.Afrad
جمعه 20 دی 1392, 14:01 عصر
والا توضیحات شما این بود که رکورد های تکراری نمایش داده بشه!
دستوری هم که قرار دادم دقیقا رکوردهای که مثلا نام آنها علی است رو در گریدویو نمایش میده!
دیگه چی میخوایید من نمیدونم!
شرطc.Name.Equals(c.Name) همیشه درسته پس همه رکوردها سلکت میشه.

براساس نام گروهبندی کن و گروههایی که تعداد اعضاش بیشتر از یک هست رو سلکت کن:

var groups = from t in db.tbl
group t by t.name into g
where g.Count() > 1
select g;