LINQ 返回条件对象
我有一个简单的 LINQ 语句,它根据查询 Xml 文件返回对象列表。
var locations = from s in xdoc.Descendants("RECORD")
where IdList.Contains(s.Element("ID1").Value)
select new Location
{
Id = s.Element("ID1").Value
};
每个 Xml 记录还有一个 ID2 元素,如果“Contains”为 true,我希望返回该元素。所以基本上,我希望我的 Location 对象基于 IdList Contains 返回的内容(可以是 ID1 或 ID2)。例如:
if(IdList.Contains(s.element("ID1").value){ select new Location {Id = s.Element("ID1").Value};}
if(IdList.Contains(s.element("ID2").value){ select new Location {Id = s.Element("ID2").Value};}
这可以在单个 LINQ 语句中完成吗?
I have a simple LINQ statement that returns a list of objects based on querying an Xml file.
var locations = from s in xdoc.Descendants("RECORD")
where IdList.Contains(s.Element("ID1").Value)
select new Location
{
Id = s.Element("ID1").Value
};
Each Xml record also has an ID2 element that I want to return if "Contains" is true. So basically, I want my Location object to be conditional based on what the IdList Contains returns (it could be ID1 or ID2). Something like:
if(IdList.Contains(s.element("ID1").value){ select new Location {Id = s.Element("ID1").Value};}
if(IdList.Contains(s.element("ID2").value){ select new Location {Id = s.Element("ID2").Value};}
Can this be done in a single LINQ statement?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您需要位置包含 ID1 或 ID2,只需添加一个 where 条件
If you need the location to contain either ID1 or ID2 just add a where condition
请参阅:If Else in LINQ
Refer this: If Else in LINQ
试试这个:
只要对于 xdoc.Descendants("RECORD") 中的每个元素,
IdList
包含 s.Element("ID1") 就应该有效.Value 或s.Element("ID2").Value
但不能同时使用两者(否则您将获得该特定记录的两个Location
对象)。Try this:
This should work as long as for each element in
xdoc.Descendants("RECORD")
,IdList
contains eithers.Element("ID1").Value
ors.Element("ID2").Value
but not both (otherwise you will get twoLocation
objects for that particular record).