gpt4 book ai didi

c# - LINQ查询获取两条记录的公交车号码

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:18 25 4
gpt4 key购买 nike

这是我的表格示例

Busnumber   st1  st2    st3     st4     st5     st6
1 abc xyz hvh cdff dfds dfds
2 abc efg vv vhv cfg vvv
3 uyt ggg xyz hhh saa pok
4 uyr abc xyz iii ppp wer

我想在此处的单个总线编号中选择同时具有两个站点“abc”和“xyz”的所有总线编号,我想要的输出是总线编号 1 和 4

那么如何在 xml 中使用 c# 在 Windows Phone 中实现此 linq 查询我正在尝试下面的代码

XDocument loadedCustomData = XDocument.Load("best.xml");
var filteredData =
from c in loadedCustomData.Descendants("record")
///what to do below here in were clause statement ??????
where (string)c.Element ("st1") == froms.Text && (string)c.Element("st2") == to.Text ..........

select new words()
{
Busnumber = (string)c.Element("bus")

};
listBox1.ItemsSource = filteredData;

我的 xml 示例

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data-set xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<record>
<Busnumber>1</Busnumber>
<st1>Santacruz Depot</st1>
<st2>abc</st2>
<st3>Vile Parle</st3>
<st4>Mithibai College</st4>
<st5>xyz</st5>
<st6>Juhu Shopping Centre</st6>
</record>
<record>
.......
</record>

最佳答案

您可以使用此线程中解释的技术:Determine if a sequence contains all elements of another sequence using Linq

使用相同的方法检查 <record> 的列表的子项包含您要检查的所有条件。你的情况下的实现是这样的:

var criteriaArray = new string[]{ "abc", "xyz" };
var filteredData =
from c in Busnumber.Descendants("record")
where !criteriaArray.Except(c.Elements().Select(o => (string)o))
.Any()
select new
{
Busnumber = (string)c.Element("Busnumber")
};

您可能希望更改 where 子句以仅检查以“st”开头的子元素:

where !criteriaArray.Except(c.Elements()
.Where(o => o.Name.LocalName.StartsWith("st"))
.Select(o => (string)o))
.Any()

更新:

我会尝试解释一下,我假设您已经仔细阅读了我上面链接的问题。这段代码 subset.Except(superset).Any()检查子集是否包含超集中不包含的元素。

所以这个!subset.Except(superset).Any()检查子集是否不包含未包含在超集中的元素。换句话说,子集仅包含也包含在超集中的元素。换句话说,超集包含子集的所有元素。所以这就是你想要的;检查记录节点(超集)的子节点是否包含 criteriaArray(子集)的所有成员。

关于c# - LINQ查询获取两条记录的公交车号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25259310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com