2014-10-31 3 views
0

я написал запрос, чтобы получить определенное значение XML-узла с помощью Еогеасп
я пытаюсь retrive отчетливое BankName и TemplateModel из XML
может любой один только лучший способ написать запрос с IEnumerable или что-то подобное, что
мой Xml выглядит следующим образомкак получить уникальные значения из XML

<Bank> 
<BankName BankName="DohaBank" TemplateModel="CT1"> 
    <ChqBasics>  
    </ChqBasics> 
    <XandYPosition>  
    </XandYPosition> 
</BankName> 
<BankName BankName="DohaBank" TemplateModel="CT2"> 
    <ChqBasics>  
    </ChqBasics> 
    <XandYPosition>   
    </XandYPosition>  
</BankName> 
<BankName BankName="IBQ" TemplateModel="CT1New"> 
    <ChqBasics>  
    </ChqBasics> 
    <XandYPosition>  
    </XandYPosition> 
</BankName> 

мой C# код

public List<string> bankload() 
    { 
     List<string> bankname=new List<string>(); 
     XDocument doc = XDocument.Load("newtest.xml"); 
     var result= (from item in doc.Descendants("BankName") 
       select (string)item.Attribute("BankName")).Distinct(); 
     foreach (var item in result) 
     { 
      bankname.Add(item.ToString()); 
     } 
     return bankname; 
    } 

    public static List<string> templateload(string bankname) 
    { 
     List<string> templatename = new List<string>(); 
     XDocument doc = XDocument.Load("newtest.xml"); 
     var result = (from item in doc.Descendants("BankName") 
         where item.Attribute("BankName").Value == bankname 
         select (string)item.Attribute("TemplateModel")).Distinct(); 
     foreach (var item in result) 
     { 
      templatename.Add(item.ToString()); 
     } 
     return templatename; 
    } 

мне нужно, чтобы связать результат в выпадающем списке

ответ

1

Почему бы не сделать это?

public List<string> bankload() 
{ 
    return 
    (
     from item in XDocument.Load("newtest.xml").Descendants("BankName") 
     select (string)item.Attribute("BankName") 
    ) 
     .Distinct() 
     .ToList(); 
} 

public static List<string> templateload(string bankname) 
{ 
    return 
    (
     from item in XDocument.Load("newtest.xml").Descendants("BankName") 
     where item.Attribute("BankName").Value == bankname 
     select (string)item.Attribute("TemplateModel") 
    ) 
     .Distinct() 
     .ToList(); 
} 

ли вы имеете в виду лямбды, как это?

public List<string> bankload() 
{ 
    return 
     XDocument 
      .Load("newtest.xml") 
      .Descendants("BankName") 
      .Select(item => (string)item.Attribute("BankName")) 
      .Distinct() 
      .ToList(); 
} 

public static List<string> templateload(string bankname) 
{ 
    return 
     XDocument 
      .Load("newtest.xml") 
      .Descendants("BankName") 
      .Where(item => item.Attribute("BankName").Value == bankname) 
      .Select(item => (string)item.Attribute("TemplateModel")) 
      .Distinct() 
      .ToList(); 
} 
+0

Благодаря его работать. можете ли вы сделать этот код с выражением lamda –

+0

Вы имеете в виду? – Enigmativity

+0

s точно ... большое спасибо ... вы отлично ... –

0

Вернуть список различных комбинаций BankName/TemplateModel в вашем XML:

var result = doc.Descendants("BankName") 
       .Select(bn => new 
           { 
           BankName = bn.Attribute("BankName").Value, 
           TemplateModel = bn.Attribute("TemplateModel") 
                .Value 
           }); 
Смежные вопросы