我正在使用from..select linq查询从XML文件中读取数据,数据量巨大。我能看到的最大数据集是1100行,每行包含100个字符。这会导致我的手机挂起并且应用程序崩溃。在模拟器上,它工作正常,但加载需要相当长的时间。
现在我想要的是基于我想要的一些条件包括查询中的数据元素。作为一个例子,我现在拥有的是......
var dataSet = from r in something.Elements("chapter")
select new dictChapter{
Name = r.Attribute("Name").Value,
Desc1 = r.Attribute("Description1").Value,
Desc2 = r.Attribute("Description2").Value,
Desc3 = r.Attribute("Description3").Value
};
ListBox.DataContext = dataSet;
但我想根据设置选择说明。我想要的东西(我知道它不起作用,但我想解释我想做什么)
var dataSet = from r in something.Elements("chapter")
select new dictChapter{
Name = r.Attribute("Name").Value,
if (ShowDesc1 == true)
Desc1 = r.Attribute("Description1").Value,
if (ShowDesc2 == true)
Desc2 = r.Attribute("Description2").Value,
if (ShowDesc3 == true)
Desc3 = r.Attribute("Description3").Value
};
ListBox.DataContext = dataSet;
非常感谢
答案 0 :(得分:2)
var dataSet = from r in something.Elements("chapter")
select new dictChapter{
Name = r.Attribute("Name").Value,
Desc1 = ShowDesc1 ? r.Attribute("Description1").Value : String.Empty,
Desc2 = ShowDesc2 ? r.Attribute("Description2").Value : String.Empty,
Desc3 = ShowDesc3 ? r.Attribute("Description3").Value : String.Empty,
};
答案 1 :(得分:2)
您可以尝试以下内容:
var dataSet = from r in something.Elements("chapter")
select new dictChapter{
Name = r.Attribute("Name").Value,
Desc1 = (ShowDesc1 ? r.Attribute("Description1").Value : null),
Desc2 = (ShowDesc2 ? r.Attribute("Description2").Value : null),
Desc3 = (ShowDesc3 ? r.Attribute("Description3").Value : null),
};
这不完全是你想要的,因为所有Desc1-3属性总是在每个元素上设置,但如果ShowDesc1-3为假,则它们被设置为null。