LINQ to XML selecting elements similar to SQL IN clause2019 Community Moderator ElectionUse linq to generate direct update without selectLINQ to read XMLUsing LINQ to remove elements from a List<T>Create XML using Linq to XML and arrayslinq to xml - display results based on array or listWhat is the difference between Linq to XML Descendants and ElementsHow to query XML data in database column using Linq to SQL and Linq to XML?Selecting nth child element based on parent elements attributeLINQ to XML: Select values conditional on other valuesLinq to XML to populate parent/child relationship
I got the following comment from a reputed math journal. What does it mean?
Are Roman Catholic priests ever addressed as pastor
World War I as a war of liberals against authoritarians?
Is it insecure to send a password in a `curl` command?
What is the relationship between relativity and the Doppler effect?
Are ETF trackers fundamentally better than individual stocks?
How to make healing in an exploration game interesting
Do I need to be arrogant to get ahead?
Math equation in non italic font
What's the meaning of a knight fighting a snail in medieval book illustrations?
How can we have a quark condensate without a quark potential?
Is there a place to find the pricing for things not mentioned in the PHB? (non-magical)
Violin - Can double stops be played when the strings are not next to each other?
Different outputs for `w`, `who`, `whoami` and `id`
What is "focus distance lower/upper" and how is it different from depth of field?
How could a scammer know the apps on my phone / iTunes account?
What is the adequate fee for a reveal operation?
Python if-else code style for reduced code for rounding floats
Is it good practice to use Linear Least-Squares with SMA?
Simplify an interface for flexibly applying rules to periods of time
Why does a Star of David appear at a rally with Francisco Franco?
What are substitutions for coconut in curry?
How do you talk to someone whose loved one is dying?
Happy pi day, everyone!
LINQ to XML selecting elements similar to SQL IN clause
2019 Community Moderator ElectionUse linq to generate direct update without selectLINQ to read XMLUsing LINQ to remove elements from a List<T>Create XML using Linq to XML and arrayslinq to xml - display results based on array or listWhat is the difference between Linq to XML Descendants and ElementsHow to query XML data in database column using Linq to SQL and Linq to XML?Selecting nth child element based on parent elements attributeLINQ to XML: Select values conditional on other valuesLinq to XML to populate parent/child relationship
I have some XML that contains Payment information including details on the Invoices the payments are being applied to. I would like to use LINQ to XML to gather only those payments that are applied to certain invoices (111,222,333) for example. If it were SQL I could use the IN (111,222,333) keyword but I am not sure how to do the same in LINQ.
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>111</Id>
<Amount>20</Amount>
</Invoice>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
LINQ
var result = xml.Select(x => x.Element("Payment"))
Where(x => x.Element("Id").Value.Contains("111","222","333"))
In this example, I would like to select "PaymentId 1" and "PaymentId 2" since they apply to invoices that have Ids that match 111, 222, or 333.
c# linq-to-xml linq-method-syntax
add a comment |
I have some XML that contains Payment information including details on the Invoices the payments are being applied to. I would like to use LINQ to XML to gather only those payments that are applied to certain invoices (111,222,333) for example. If it were SQL I could use the IN (111,222,333) keyword but I am not sure how to do the same in LINQ.
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>111</Id>
<Amount>20</Amount>
</Invoice>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
LINQ
var result = xml.Select(x => x.Element("Payment"))
Where(x => x.Element("Id").Value.Contains("111","222","333"))
In this example, I would like to select "PaymentId 1" and "PaymentId 2" since they apply to invoices that have Ids that match 111, 222, or 333.
c# linq-to-xml linq-method-syntax
add a comment |
I have some XML that contains Payment information including details on the Invoices the payments are being applied to. I would like to use LINQ to XML to gather only those payments that are applied to certain invoices (111,222,333) for example. If it were SQL I could use the IN (111,222,333) keyword but I am not sure how to do the same in LINQ.
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>111</Id>
<Amount>20</Amount>
</Invoice>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
LINQ
var result = xml.Select(x => x.Element("Payment"))
Where(x => x.Element("Id").Value.Contains("111","222","333"))
In this example, I would like to select "PaymentId 1" and "PaymentId 2" since they apply to invoices that have Ids that match 111, 222, or 333.
c# linq-to-xml linq-method-syntax
I have some XML that contains Payment information including details on the Invoices the payments are being applied to. I would like to use LINQ to XML to gather only those payments that are applied to certain invoices (111,222,333) for example. If it were SQL I could use the IN (111,222,333) keyword but I am not sure how to do the same in LINQ.
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>111</Id>
<Amount>20</Amount>
</Invoice>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
LINQ
var result = xml.Select(x => x.Element("Payment"))
Where(x => x.Element("Id").Value.Contains("111","222","333"))
In this example, I would like to select "PaymentId 1" and "PaymentId 2" since they apply to invoices that have Ids that match 111, 222, or 333.
c# linq-to-xml linq-method-syntax
c# linq-to-xml linq-method-syntax
asked Mar 6 at 21:00
webwormwebworm
4,3732083150
4,3732083150
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You can do a match/intersect against a list of these wellknown Id's.
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
Full code and NetFiddle.
const string XML = @"
<root>
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
<Invoice>
<Id>111</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
</root>
";
XElement xml = XElement.Parse(XML);
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
foreach (var item in result)
Console.WriteLine("PaymentId: 0", (string)item.Element("PaymentId"));
I see .. so I needed to find the Id element value within the collection of known Ids. I was going about it the reverse way .. and it didn't work! Thanks!
– webworm
Mar 6 at 22:23
When I try this I get anObject reference not set to an instance of an object
error on theids
List.
– webworm
Mar 6 at 23:12
@webworm Made an improvement, didn't notice that a payment can have multiple invoice-ids.
– pfx
Mar 7 at 11:34
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55032055%2flinq-to-xml-selecting-elements-similar-to-sql-in-clause%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can do a match/intersect against a list of these wellknown Id's.
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
Full code and NetFiddle.
const string XML = @"
<root>
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
<Invoice>
<Id>111</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
</root>
";
XElement xml = XElement.Parse(XML);
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
foreach (var item in result)
Console.WriteLine("PaymentId: 0", (string)item.Element("PaymentId"));
I see .. so I needed to find the Id element value within the collection of known Ids. I was going about it the reverse way .. and it didn't work! Thanks!
– webworm
Mar 6 at 22:23
When I try this I get anObject reference not set to an instance of an object
error on theids
List.
– webworm
Mar 6 at 23:12
@webworm Made an improvement, didn't notice that a payment can have multiple invoice-ids.
– pfx
Mar 7 at 11:34
add a comment |
You can do a match/intersect against a list of these wellknown Id's.
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
Full code and NetFiddle.
const string XML = @"
<root>
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
<Invoice>
<Id>111</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
</root>
";
XElement xml = XElement.Parse(XML);
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
foreach (var item in result)
Console.WriteLine("PaymentId: 0", (string)item.Element("PaymentId"));
I see .. so I needed to find the Id element value within the collection of known Ids. I was going about it the reverse way .. and it didn't work! Thanks!
– webworm
Mar 6 at 22:23
When I try this I get anObject reference not set to an instance of an object
error on theids
List.
– webworm
Mar 6 at 23:12
@webworm Made an improvement, didn't notice that a payment can have multiple invoice-ids.
– pfx
Mar 7 at 11:34
add a comment |
You can do a match/intersect against a list of these wellknown Id's.
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
Full code and NetFiddle.
const string XML = @"
<root>
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
<Invoice>
<Id>111</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
</root>
";
XElement xml = XElement.Parse(XML);
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
foreach (var item in result)
Console.WriteLine("PaymentId: 0", (string)item.Element("PaymentId"));
You can do a match/intersect against a list of these wellknown Id's.
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
Full code and NetFiddle.
const string XML = @"
<root>
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
<Invoice>
<Id>111</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
</root>
";
XElement xml = XElement.Parse(XML);
List<string> ids = new List<string> "111", "222", "333" ;
var result = xml
.Elements("Payment")
.Where(p =>
var invoiceIds = p.Elements("Invoice").Elements("Id").Select(o => o.Value);
return ids.Intersect(invoiceIds).Any();
);
foreach (var item in result)
Console.WriteLine("PaymentId: 0", (string)item.Element("PaymentId"));
edited Mar 7 at 12:38
answered Mar 6 at 22:21
pfxpfx
5,450122035
5,450122035
I see .. so I needed to find the Id element value within the collection of known Ids. I was going about it the reverse way .. and it didn't work! Thanks!
– webworm
Mar 6 at 22:23
When I try this I get anObject reference not set to an instance of an object
error on theids
List.
– webworm
Mar 6 at 23:12
@webworm Made an improvement, didn't notice that a payment can have multiple invoice-ids.
– pfx
Mar 7 at 11:34
add a comment |
I see .. so I needed to find the Id element value within the collection of known Ids. I was going about it the reverse way .. and it didn't work! Thanks!
– webworm
Mar 6 at 22:23
When I try this I get anObject reference not set to an instance of an object
error on theids
List.
– webworm
Mar 6 at 23:12
@webworm Made an improvement, didn't notice that a payment can have multiple invoice-ids.
– pfx
Mar 7 at 11:34
I see .. so I needed to find the Id element value within the collection of known Ids. I was going about it the reverse way .. and it didn't work! Thanks!
– webworm
Mar 6 at 22:23
I see .. so I needed to find the Id element value within the collection of known Ids. I was going about it the reverse way .. and it didn't work! Thanks!
– webworm
Mar 6 at 22:23
When I try this I get an
Object reference not set to an instance of an object
error on the ids
List.– webworm
Mar 6 at 23:12
When I try this I get an
Object reference not set to an instance of an object
error on the ids
List.– webworm
Mar 6 at 23:12
@webworm Made an improvement, didn't notice that a payment can have multiple invoice-ids.
– pfx
Mar 7 at 11:34
@webworm Made an improvement, didn't notice that a payment can have multiple invoice-ids.
– pfx
Mar 7 at 11:34
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55032055%2flinq-to-xml-selecting-elements-similar-to-sql-in-clause%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown