Reputation: 1832
I am trying to create a customer record which would include First Name, Last Name, SSN and Date of Birth. When a user selects a customer from the combobox (cboCustomer), it calls the SelectedIndexChanged event. I want to use the selected index to get the correct customer record from my XML.
Here is the query I've created, but it is empty. Below the query is my XML data source.
private void cboCustomer_SelectedIndexChanged(object sender, EventArgs e)
{
var doc = XElement.Load("Portfolio.xml");
customerId = cboCustomer.SelectedIndex.ToString();
if (cboCustomer.SelectedIndex != 0)
{
var custRecord =
from account in doc.Descendants("account")
let acct = account.Element("acct")
where (string)account.Element("custid") == customerId
select new
{Fname=(string)account.Element("fname"),
Lname = (string)account.Element("lname"),
Ssn = (string)account.Element("ssn"),
Dob = (string)account.Element("dob")
};
}
}
<?xml version="1.0" encoding="utf-8" ?>
<portfolio>
<account>
<acct custid="1" fname="Tommy" lname="Hawk" ssn="928-329-1929" dob="4/6/1988"></acct>
<deposits depid="1000" depdate="1/2/2011" depamount="1350.53"></deposits>
<deposits depid="1003" depdate="2/3/2011" depamount="1377.81"></deposits>
<deposits depid="1008" depdate="3/14/2011" depamount="84.00"></deposits>
<withdrawals wdid="2001" wddate="1/31/2011" wdamount="80.00"></withdrawals>
<withdrawals wdid="2005" wddate="4/8/2011" wdamount="80.00"></withdrawals>
<withdrawals wdid="2007" wddate="6/1/2011" wdamount="2600.00"></withdrawals>
</account>
<account>
<acct custid="2" fname="I. P." lname="Nightly" ssn="457-23-4871" dob="6/1/1945"></acct>
<deposits depid="1004" depdate="2/8/2011" depamount="741.22"></deposits>
<deposits depid="1005" depdate="2/9/2011" depamount="47.00"></deposits>
<deposits depid="1009" depdate="3/14/2011" depamount="89.99"></deposits>
<withdrawals wdid="2003" wddate="3/1/2011" wdamount="55.00"></withdrawals>
<withdrawals wdid="2004" wddate="3/3/2011" wdamount="28.00"></withdrawals>
<withdrawals wdid="2006" wddate="4/8/2011" wdamount="450.00"></withdrawals>
</account>
<account>
<acct custid="3" fname="Mary" lname="Echmass" ssn="192-01-2933" dob="8/10/1973"></acct>
<deposits depid="1002" depdate="1/15/2011" depamount="841.77"></deposits>
<deposits depid="1006" depdate="2/14/2011" depamount="2170.00"></deposits>
<deposits depid="1007" depdate="3/10/2011" depamount="21.01"></deposits>
<withdrawals wdid="2002" wddate="1/16/2011" wdamount="700.00"></withdrawals>
<withdrawals wdid="2008" wddate="6/3/2011" wdamount="24.00"></withdrawals>
<withdrawals wdid="2009" wddate="6/30/2100" wdamount="38.46"></withdrawals>
</account>
</portfolio>
Upvotes: 0
Views: 133
Reputation: 244918
There is no element custid
in your XML, but you're looking for it in your code.
You probably want
where acct.Attribute("custid").Value == customerId
And you need to modify your select
in a similar way.
Upvotes: 2