Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Linq ve Dinamik property


Seele

Öne çıkan mesajlar

baya zorlandigim bir konu. simdi elimde bir txt dosyasi var
bu dosya icerigi söyle:
name;namenew;adress;plz;ort;telefon;telefax;epost;web; (bu ilk satir)
daha sonra ki satirlarda datalar var.
elimde bir linq var


var query = from line in datalines
let data = line.Split(';')
select new
{
name = data[0],
namenew = data[1],
adress = data[2],
plz = data[3],
ort = data[4],
telefon = data[5],
telefax = data[6],
epost = data[7],
web = data[8]
};


görüldügü gibi kod icinde hardcoded sekilde yanliz txt icerigi farkli ise programi cöpe at.
simdi diyelim elimize yeni bir text geldi ve yeni bir field eklendi. adi pati olsun
pati;name;namenew;adress;plz;ort;telefon;telefax;epost;web;
su bölüm

" name = data[0],
namenew = data[1],
adress = data[2],
plz = data[3],
ort = data[4],
telefon = data[5],
telefax = data[6],
epost = data[7],
web = data[8] "



hardcoded oldugu icin program calismayacaktir. burayi nasil dinamik bir bicimde olusturabilirim.
Link to comment
Sosyal ağlarda paylaş

said:
You might use a dictionary, say

Dictionary properties;
I think in most cases where something similar is done, it's done like this.
In any case, you would not gain anything from creating a "real" property with set and get accessors, since it would be created only at run-time and you would not be using it in your code...

Here is an example, showing a possible implementation of filtering and sorting (no error checking):



using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1 {

class ObjectWithProperties {
Dictionary<string, object> properties = new Dictionary<string,object>();

public object this[string name] {
get {
if (properties.ContainsKey(name)){
return properties[name];
}
return null;
}
set {
properties[name] = value;
}
}

}

class Comparer<T> : IComparer<ObjectWithProperties> where T : IComparable {

string m_attributeName;

public Comparer(string attributeName){
m_attributeName = attributeName;
}

public int Compare(ObjectWithProperties x, ObjectWithProperties y) {
return ((T)x[m_attributeName]).CompareTo((T)y[m_attributeName]);
}

}

class Program {

static void Main(string[] args) {

// create some objects and fill a list
var obj1 = new ObjectWithProperties();
obj1[test] = 100;
var obj2 = new ObjectWithProperties();
obj2[test] = 200;
var obj3 = new ObjectWithProperties();
obj3[test] = 150;
var objects = new List<ObjectWithProperties>(new ObjectWithProperties[]{ obj1, obj2, obj3 });

// filtering:
Console.WriteLine("Filtering:");
var filtered = from obj in objects
where (int)obj[test] >= 150
select obj;
foreach (var obj in filtered){
Console.WriteLine(obj[test]);
}

// sorting:
Console.WriteLine("Sorting:");
Comparer<int> c = new Comparer<int>("test");
objects.Sort(c);
foreach (var obj in objects) {
Console.WriteLine(obj[test]);
}
}

}
}
Link to comment
Sosyal ağlarda paylaş

El-Barto said:

çalışmıyo dediğin, kolonları kaydırarak okuyacağı için yanlış yerlere koyar diyosun dimi? Bu yeni eklenen "pati" neye göre eklenebiliyo? yani senin istediğin pati eklenince pati = data[0] olarak almak mı ayrıca?


tabiki calisiyor yani bir sekilde hata almiyorsun ama senin dedigin gibi kaydiriyor buda istenilen sonuc degil. örnek olarak patiyi txt dosyasini hazirlayan kendi ekliyor.
Link to comment
Sosyal ağlarda paylaş

yardimlariniz icin tesekküler reyou'nun dedigi gibi cözdüm güzel oldu. simdi bas bir sorunum var.
bir object var. bunun daha önceden ayarlanmis entityleri var örnek olarak.

account accountCreate = new account();
accountCreate.name = item.name;
accountCreate.namenew = item.name2;
accountCreate.address1_line1 = item.adress;
accountCreate.address1_postalcode = item.plz;


benim yapmak istedigim txt'den olan entityleri bunlarin yerine koymak ve degeri girmek. bir text nasil property döner hic bir fikrim yok.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...