我正在开发一个Windows Phone 7应用程序。
我有一个表中的ID列表,我想过滤一个包含有关这些表的所有信息的XML文件。
我有以下C#代码:
var filteredData =
from c in loadedData.Descendants("gameDescription")
where c.Attribute("gameType").Value == gameType &&
c.Attribute("language").Value.Equals(language)
select new SampleData.GamesDesc()
{
Id = uint.Parse(c.Attribute("game_id").Value),
. . .
};
如果我有List<long> unfinishedGamesId
。我想要提交结果,让每个游戏都没有来自unfinishedGamesId的Id。类似的东西:
c.Attribute("game_id").Value != unfinishedGamesId[0] &&
c.Attribute("game_id").Value != unfinishedGamesId[1] &&
...
如何将此添加到where子句?
答案 0 :(得分:0)
你想做什么?如果您想要包含其值在该列表中的数据,则查询将为:
var filteredData =
from c in loadedData.Descendants("gameDescription")
where c.Attribute("gameType").Value == gameType &&
c.Attribute("language").Value.Equals(language) &&
unfinishedGamesId.Contains(c.Id)
select new SampleData.GamesDesc()
{
Id = uint.Parse(c.Attribute("game_id").Value),
. . .
};
假设Id值是您使用uint.Parse
获得的值,则此代码应该有效:
var filteredData =
from c in loadedData.Descendants("gameDescription")
where c.Attribute("gameType").Value == gameType &&
c.Attribute("language").Value.Equals(language) &&
unfinishedGamesId.Contains(uint.Parse(c.Attribute("game_id").Value))
select new SampleData.GamesDesc()
{
Id = uint.Parse(c.Attribute("game_id").Value),
. . .
};
执行属性查找和解析两次效率不高,但我不知道如何解决这个问题。