FIrst часть вашего кода выглядит хорошо. Вам не нужен цикл foreach. Вот как выглядит ваш код:
XDocument doc = XDocument.Load(Server.MapPath("PhoneBook.xml"));
var q = from c in doc.Descendants("Persons")
select new
{
name = c.Element("Name"),
phone = c.Element("Phone"),
};
ListView1.DataSource = q;
ListView1.DataBind();
В разметке вы можете связать любое поле шаблона с именем или телефоном. Ваш ListView может выглядеть следующим образом:
<asp:ListView runat="server" ID="ListView1">
<LayoutTemplate>
<table runat="server" id="table1">
<tr runat="server" id="itemPlaceholder">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr id="Tr1" runat="server">
<td id="Td1" runat="server">
<asp:Label ID="NameLabel" runat="server"
Text='<%#Eval("Name") %>' />
</td>
<td id="Td2" runat="server">
<asp:Label ID="PhoneLabel" runat="server"
Text='<%#Eval("Phone") %>' />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
И эта схема будет производить этот вид продукции:
Надеется, что это помогает!
Какая ошибка (ы) вы получаете? –