Arama butonu
Bu konudaki kullanıcılar: 2 misafir
5
Cevap
2033
Tıklama
0
Öne Çıkarma
LİNQ ile DataGridView üzerinde sorgu nasıl yazılır?
A
13 yıl
Çavuş
Konu Sahibi

visual studyo 2010 c# kullanıyorum


formumda bir datagridview var bunun içindeki verileri linq ile sorgulamak istiyorum


deneme 1:


var sirala1 = from datasirala in dataGridView1.DataSource.ToString().ToList() select datasirala;
listBox1.Items.Add(sirala1);
hata=Object reference not set to an instance of an object.



deneme 2:


var sirala2 = from data in dataGridView1.Columns.ToString().ToList() select data;
foreach (var s in sirala2)
{
listBox1.Items.Add(sirala2);
}


burada herhangibir hata vermiyor fakat listboxta alt alta bir sürü system.linq.enumerable+where select list literotor'2[system.char.system.char] yazısı çıkıyor verilerimin yerine



K
13 yıl
Yarbay

çünkü gridviwin datasourcesini stringe çeviriyorsun sonra da liste çeviriyorsun. sıralama işlemini gridviewe datasource olarak tanımladıgın nesne üzerinden yapman lazım. gridview içinden değil.


Bu mesaja 1 cevap geldi.
B
13 yıl
Yüzbaşı

aslında datagridview'da veri göstermek için bir kaynak gösteriyor olman lazım. bunu datagridview içinde göstermeden kaynağı bir datatable'a atıp oradan sorgulayabilirsin.
ds isimli bir dataset'in olduğunu varsayarsak:
var query = ds.Tables[0].AsEnumerable()
.OrderBy(d=> d.Field<string>("Column1"))
.Select(d => d.Field<string>("Column1")).ToList();


Bu mesaja 1 cevap geldi.
A
13 yıl
Çavuş
Konu Sahibi

bana datagridview deki verileri datasete yada datatable ye nasıl aktaracagımı gösterirmisiniz ? sonra dataset ve datatable üzerinden sorgu yapabilirmiyim ?


Bu mesaja 1 cevap geldi.
A
13 yıl
Çavuş
Konu Sahibi

sayıları tek basamaklı yazdıgım zaman sıkıntı yok fakat iki basamaklı ve daha büyük sayılar yazdıgım zaman sıralama yapmıyor
nasıl düzeltebilirim


DataTable dt1 = new DataTable();

dt1.Columns.Add("ad");
dt1.Columns.Add("aded");
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
DataRow dr = dt1.NewRow();
dr[0] = row.Cells[0].Value;
dr[1] = row.Cells[1].Value;
dt1.Rows.Add(dr);
}



var sirala5 = from s in dt1.AsEnumerable() orderby s.Field<string>("aded") descending select s;

dataGridView2.DataSource = sirala5.AsDataView();


Bu mesaja 1 cevap geldi.
I
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: aksamyildizi

sayıları tek basamaklı yazdıgım zaman sıkıntı yok fakat iki basamaklı ve daha büyük sayılar yazdıgım zaman sıralama yapmıyor
nasıl düzeltebilirim


DataTable dt1 = new DataTable();

dt1.Columns.Add("ad");
dt1.Columns.Add("aded");
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
DataRow dr = dt1.NewRow();
dr[0] = row.Cells[0].Value;
dr[1] = row.Cells[1].Value;
dt1.Rows.Add(dr);
}



var sirala5 = from s in dt1.AsEnumerable() orderby s.Field<string>("aded") descending select s;

dataGridView2.DataSource = sirala5.AsDataView();

var sirala5 = from s in dt1.AsEnumerable() orderby int.Parse(s.Field<string>("aded")) descending select s;

int.Parse(s.Field<string>("aded"))

Sıralarken string i parse et. integer e çevirsen sıralama sorunun olmaz. Tabi adde kolonuda sayı değerleri olması lazım.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.