LINUX.ORG.RU

История изменений

Исправление grim, (текущая версия) :

Нет. Можно построить деревья. То, что получается в данном случае, кстати так и назыается Expression Trees.

Не забывайте Lazy Evaluation

Например следующим шагом вы делаете join с xml докуменом по условию.

var molSpec = from p in Db.Personell
    join a in Db.Access on p.PersonellId equals a.PersonellId
    where p.Age < 30 && p.Education = High && a.Level < Manager
    select new { Id= p.PersonellId, Name = p.Name, Age = p.Age, Birthday = p.DateOfBirth };

var specs = from s in molSpec
    join x in xDoc.Element("Feed").Elements("Employee") on s.Id equals x.Attribute("id").Value
    where x.Attribute("Salary").Value > 1000
    select new { Personell = s, Xml = x };

Соответственно Expression Tree извлечет только данные нужные для результата.

Живым примером было, когда я за пару часов написал тростенькую программу сравнивающую 2 xml документа ~150мб каждый.

Коллега ненавидящий C# сказал что это херня и нужно пользовать профессиональные тулзы запустив XmlSpy.

Через двое суток он его убил и решил доказать мне что Java может лучше и через двое суток предоставил резутат, но, узнав что моя программа сранивает их за пару минут, не стал ее демонстрировать.

Кстати, после небольшой оптимизации она стала справляться за ~20 sec.

Исправление grim, :

Нет. Можно построить деревья. Оно, кстати так и назыается Expression Trees.

Не забывайте Lazy Evaluation

Например следующим шагом вы делаете join с xml докуменом по условию.

var molSpec = from p in Db.Personell
    join a in Db.Access on p.PersonellId equals a.PersonellId
    where p.Age < 30 && p.Education = High && a.Level < Manager
    select new { Id= p.PersonellId, Name = p.Name, Age = p.Age, Birthday = p.DateOfBirth };

var specs = from s in molSpec
    join x in xDoc.Element("Feed").Elements("Employee") on s.Id equals x.Attribute("id").Value
    where x.Attribute("Salary").Value > 1000
    select new { Personell = s, Xml = x };

Соответственно Expression Tree извлечет только данные нужные для результата.

Живым примером было, когда я за пару часов написал тростенькую программу сравнивающую 2 xml документа ~150мб каждый.

Коллега ненавидящий C# сказал что это херня и нужно пользовать профессиональные тулзы запустив XmlSpy.

Через двое суток он его убил и решил доказать мне что Java может лучше и через двое суток предоставил резутат, но, узнав что моя программа сранивает их за пару минут, не стал ее демонстрировать.

Кстати, после небольшой оптимизации она стала справляться за ~20 sec.

Исходная версия grim, :

Нет. Можно построить деревья. Оно, кстати так и назыается Expression Trees.

Не забывайте Lazy Evaluation

Например следующим шагом вы делаете join с xml докуменом по условию.

var molSpec = from p in Db.Personell
    join a in Db.Access on p.PersonellId equals a.PersonellId
    where p.Age < 30 && p.Education = High && a.Level < Manager
    select new { Id= p.PersonellId, Name = p.Name, Age = p.Age, Birthday = p.DateOfBirth };

var specs = from s in molSpec
    join x in xDoc.Element("Feed").Elements("Employee") on s.Id equals x.Attribute("id").Value
    where x.Attribute("Salary").Value > 1000
    select new { Personell = s, Xml = x };

Соответственно Expression Tree извлечет только данные нужные для результата.

Живым примером было, когда я за пару часов нписал тростенькую программу сравнивающую 2 xml документа ~150мб каждый.

Коллега ненавидящий C# сказал что это херня и нужно пользовать профессиональные тулзы запустив XmlSpy.

Через двое суток он его убил и решил доказать мне что Java может лучше и через двое суток предоставил резутат, но, узнав что моя программа сранивает их за пару минут, не стал ее демонстрировать.

Кстати, после небольшой оптимизации она стала справляться за ~20 sec.