PDA

View Full Version : سوال: ریختن حاصل یه کوئری linq در یه فایل xml



cjNet
شنبه 04 شهریور 1391, 10:22 صبح
سلام به همه دوستان .
من میخوام حاصل یه کوئری linq مانند کوئری زیر رو بریزم تو یه فایل xml (با حاصلش یه فایل xml تولید کنم ) .



var result = from p in context.ProductGroup
where p.groupID > 3
select p;

دوستان اگه روشی سراغ دارند که توش مجبور نباشیم خودمون اطلاعات رو دونه دونه از حاصل کوئری بخونیم و در فایل xml بریزیم ممنون میشم مطرح کنند :لبخندساده:

tooraj_azizi_1035
شنبه 04 شهریور 1391, 10:54 صبح
XDocument doc = new XDocument(new XElement("configuration", query));
doc.Save(file);

cjNet
دوشنبه 06 شهریور 1391, 16:06 عصر
XDocument doc = new XDocument(new XElement("configuration", query));
doc.Save(file);

ممنون دوست عزیز .
اما این روشی که شما گفتید مشخصات کوئری رو در فایل می ریزه نه اطلاعات موجود توی اون رو . به عنوان مثال به جای نام کالا و اطلاعات اون ، نام کلاس و nameSpace اون رو در فایل می ریزه ( مثلا nameSpace.className ) .

دوستان اگه روشی برای ریختن اطلاعات حاصل کوئری در فایل xml دارند خوشحال میشم مطرح کنند :تشویق:

mmd2009
دوشنبه 06 شهریور 1391, 19:02 عصر
با سلام

یک نمونه کد کامل داشتم چون خودم قبلا ازش استفاده می کردم ولی واسه بهتر شدن کار یک تغییراتی داخلش دادم و داده هارو مستقم وارد کردم و از DB نخوندم که مثال قشنگ مشخص باشه داره چیکار میکنه.



public class User
{
public string Name { get; set; }
public string Family { get; set; }
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
using (var folderBrowserDialog = new FolderBrowserDialog())
{
if (folderBrowserDialog.ShowDialog() != DialogResult.OK) return;
var users = new List<User>
{
new User {Name = "Mojtaba", Family = "Dinarvand"},
new User {Name = "reza", Family = "saiedi"},
new User {Name = "milad", Family = "kiani"},
new User {Name = "farhad", Family = "ehsani"},
};
var xmlDoc = new XElement("Users",
from c in users
select new XElement("User",
new XElement("Family", c.Family),
new XElement("Name", c.Name)));

xmlDoc.Save(folderBrowserDialog.SelectedPath + "/Users.xml");
}


}
}



ولی با این حال یک توضیح میدم : ببینید در کار با فایل xml ما با XElement سرو کار دایم تا به صورت درختی اطلاعات رو وارد و خارج بکنیم. توجه کنید همین حالت درختی بودن زمان Load شدن داده ها هم کار رو برای ما خیلی راحت میکنه. همونطور که میبینید XElement اول فرضا نام موجودیت رو برای ما مشخص کرده XElement دوم نام رکورد هارو و XElement های بعدی دادههای مارو یا به عبارتی ستون مارو مشخص کردن.

در خروجی فوق ما محتوای زیر رو خواهیم داشت :


<?xml version="1.0" encoding="utf-8" ?>
- <Users>
- <User>
<Family>Dinarvand</Family>
<Name>Mojtaba</Name>
</User>
- <User>
<Family>saiedi</Family>
<Name>reza</Name>
</User>
- <User>
<Family>kiani</Family>
<Name>milad</Name>
</User>
- <User>
<Family>ehsani</Family>
<Name>farhad</Name>
</User>
</Users>


موفق باشید

tooraj_azizi_1035
سه شنبه 07 شهریور 1391, 16:37 عصر
برای ریختن خروجی یک کوئری در فایل XML باید از متد CopyToDataTable استفاده کرده و سپس متد WrtieXML را فراخوانی کنید:
http://www.farsimsdn.somee.com/Default.aspx?id=129