Поскольку вы добавили больше деталей, теперь я могу дать лучший ответ.
Вот функциональное консольное приложение для синтаксического анализа и объединения xml, которое демонстрирует, что именно вы ищете (я думаю). Для анализа XML-файлов, а не XML-строк, используйте метод XDocument
Load, а не отображаемый метод Parse. Удачи,
XDocument docA = XDocument.Parse(
@"<Devanagri_to_itrans>
<mapping>
<character>अ</character>
<itrans>a</itrans>
</mapping>
</Devanagri_to_itrans>");
XDocument docB = XDocument.Parse(
@"<Gujrathi_to_itrans>
<mapping>
<character>અ</character>
<itrans>a</itrans>
</mapping>
</Gujrathi_to_itrans>");
var devanagriKeys = (from d in docA.Descendants("mapping")
select new {
Key = d.Descendants("itrans").FirstOrDefault().Value,
Character = d.Descendants("character").FirstOrDefault().Value
}).ToArray();
var gujrathiKeys = (from g in docB.Descendants("mapping")
select new {
Key = g.Descendants("itrans").FirstOrDefault().Value,
Character = g.Descendants("character").FirstOrDefault().Value
}).ToArray();
var crossReference = (from d in devanagriKeys
join g in gujrathiKeys on d.Key equals g.Key
select new {
d.Key,
Devanagri = d.Character,
Gujrathi = g.Character
}).ToList();
Console.WriteLine("Enter a key character to translate:");
string searchKey = Console.ReadLine();
var translation = crossReference.Where(cr => cr.Key == searchKey).FirstOrDefault();
if (translation == null)
Console.WriteLine("No such key in the cross reference.");
else
Console.WriteLine("{0} is {1} in Devanagri and {2} in Gujrathi",
translation.Key, translation.Devanagri, translation.Gujrathi);
Console.ReadKey(true);
ЗА ЗАПРОС ПЕРЕМЕННОЙ СЕССИИ:
Анонимные типы предназначены только для использования внутри метода. Чтобы поместить список в переменную Session для использования в другом месте, создайте собственный реальный класс, который содержит 3 требуемых свойства, и измените приведенную выше строку кода так, чтобы она соответствовала приведенной ниже. (Название класса, которое я выбрал, было CrossReferenceTranslation
.)
Session["CrossReference"] = (from d in devanagriKeys
join g in gujrathiKeys on d.Key equals g.Key
select new CrossReferenceTranslation() {
d.Key,
Devanagri = d.Character,
Gujrathi = g.Character
}).ToList();
... затем, в другой момент времени вы можете сделать это, чтобы получить список объектов сеанса в переменную. Обратите внимание на предположение, что переменная может быть нулевой, что происходит, когда время сеанса истекло ...
List<CrossReferenceTranslation>() crossReference = Session["CrossReference"] ??
new List<CrossReferenceTranslation>();