Skip to content

Commit d5034b3

Browse files
committed
gems linq
1 parent d74e59d commit d5034b3

File tree

2 files changed

+23
-44
lines changed

2 files changed

+23
-44
lines changed

ADO.NET/02/02-XML/MainWindow.Designer.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ADO.NET/02/02-XML/MainWindow.cs

Lines changed: 22 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,69 +9,45 @@
99
using System.Windows.Forms;
1010
using System.Xml;
1111
using System.Linq;
12+
using System.Xml.Linq;
1213

1314
namespace _02_XML
1415
{
1516
public partial class MainWindow : Form
1617
{
17-
private XmlDocument xDoc = new XmlDocument();
18-
private XmlElement xRoot;
18+
private XElement gems;
1919

2020
private void LoadColors()
2121
{
22-
// Load colors
23-
2422
HashSet<string> gemsColors = new HashSet<string>();
2523

2624
gemsColors.Add("");
2725

28-
XmlElement xRoot = xDoc.DocumentElement;
29-
foreach (XmlNode xnode in xRoot)
30-
{
31-
var gemSpecs = new List<string>();
32-
33-
foreach (XmlNode childnode in xnode.ChildNodes)
34-
{
35-
if (childnode.Name == "color")
36-
{
37-
gemsColors.Add(childnode.InnerText);
38-
}
39-
40-
gemSpecs.Add(childnode.InnerText);
41-
}
26+
IEnumerable<XElement> allGemsColors = from item in gems.Elements()
27+
select item.Element("color");
4228

43-
gemsView.Rows.Add(gemSpecs.ToArray());
29+
foreach (string color in allGemsColors)
30+
{
31+
gemsColors.Add(color);
4432
}
4533

46-
gemsColor.DataSource = gemsColors.ToList();
34+
gemsColor.DataSource = gemsColors.ToArray();
4735
}
4836

4937
private void LoadGemsByColor(string color)
5038
{
5139
gemsView.Rows.Clear();
5240

53-
foreach (XmlNode xnode in xRoot)
41+
IEnumerable<XElement> gemsByColor = from item in gems.Elements()
42+
where (string)item.Element("color") == color
43+
select item;
44+
45+
foreach (var gem in gemsByColor)
5446
{
55-
bool rightColor = color == "" ? true : false;
56-
var gemSpecs = new List<string>();
57-
58-
foreach (XmlNode childnode in xnode.ChildNodes)
59-
{
60-
if (childnode.Name == "color")
61-
{
62-
if (childnode.InnerText == color)
63-
{
64-
rightColor = true;
65-
}
66-
}
67-
68-
gemSpecs.Add(childnode.InnerText);
69-
}
70-
71-
if (rightColor)
72-
{
73-
gemsView.Rows.Add(gemSpecs.ToArray());
74-
}
47+
IEnumerable<string> gemSpecs = from item in gem.Elements()
48+
select item.Value;
49+
50+
gemsView.Rows.Add(gemSpecs.ToArray());
7551
}
7652
}
7753

@@ -81,8 +57,11 @@ public MainWindow()
8157

8258
// Load XML
8359

84-
xDoc.Load(Path.Combine(Application.StartupPath.ToString(), "./Gems.xml"));
85-
xRoot = xDoc.DocumentElement;
60+
var filename = "Gems.xml";
61+
var currentDirectory = Directory.GetCurrentDirectory();
62+
var gemsFile = Path.Combine(currentDirectory, filename);
63+
64+
gems = XElement.Load(gemsFile);
8665

8766
// Load colors
8867

0 commit comments

Comments
 (0)