LINQ To XML با استفاده از دیتاتیبل
سلام دوستان
من برای بایند کردن یک فایل XML با ساختار پایین
<?xml version="1.0" encoding="utf-8"?>
<Books>
<Book>
<id>1</id>
<title>Introducing Microsoft LINQ</title>
<author>Paolo Pialorsi</author>
</Book>
</Books>
یک دیتاست به پرووژه ام اضافه کردم و داخل دیتاست هم یک دیتاتیبل به نام Book با سه ستون author، id ، title که نوع ستون id رو کلید و با خاصیت auto increment تنظیم کردم
الان می خوام از وقتی از طریق دو تا تکس باکس نام کتاب و نویسنده رو بگیرم و با کلید که توسط دیتاتیبل درست شده در یک فایل XML بریزم
اگر امکان داره یک نمونه کد معرفی کنید
ممنون
نقل قول: LINQ To XML با استفاده از دیتاتیبل
نیاز به دیتاست نیست. از LinqToXML استفاده کن.
فرض کن نام فایل books.xml و کنار خایل اجرایی برنامه باشه.
به اینصورت میتونی اطلاعات را بیرون بکشی و نمایش بدی:
string xmlFilePath = System.IO.Path.Combine(Application.StartupPath , "books.xml" );
XElement element = null;
try
{
element = XElement.Load(Path.Combine(xmlFilePath));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
var q = from item in element.Elements("Book")
select new
{
ID = item.Element("id").Value,
title = item.Element("title").Value,
author = item.Element("author").Value
};
dataGridView1.DataSource = q.ToList();
به صورت زیر هم میتونی کتاب جدید اضافه کنی:
string xmlFilePath = System.IO.Path.Combine(Application.StartupPath, "books.xml");
XElement element = null;
try
{
element = XElement.Load(Path.Combine(xmlFilePath));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
int newId = 1;
if (element.Elements("Book").Count() > 0)
{
newId = element.Elements("Book").Max(item => Convert.ToInt32(item.Element("id").Value))+1;
}
element.Add(new XElement("Book",
new XElement("id", newId),
new XElement("title", textBox1.Text),
new XElement("author", textBox2.Text)
));
element.Save(xmlFilePath);
نقل قول: LINQ To XML با استفاده از دیتاتیبل
ممنون خیلی عالی بود
سرعت نمایش اطلاعات با این روش ار دستاتیبل خیلی بیشتر هست
ببخشید اگر به خوام جستجو انجام بدم به همین روش
یعنی توسط فیلد id جستجو کنم
کدش رو چطور باید تغییر بدم
نقل قول: LINQ To XML با استفاده از دیتاتیبل
string xmlFilePath = System.IO.Path.Combine(Application.StartupPath, "books.xml");
XElement element = null;
try
{
element = XElement.Load(Path.Combine(xmlFilePath));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
var book = from item in element.Elements("Book")
where item.Element("id").Value == textBox1.Text
select new
{
ID = item.Element("id").Value,
title = item.Element("title").Value,
author = item.Element("author").Value
};
dataGridView1.DataSource = book.ToList();
نقل قول: LINQ To XML با استفاده از دیتاتیبل
ممنون از لطفتون
میشه خواهش کنم نظرتون رو درباره سوال این تاپیک بگیرد