As
Abhipal Singh[
^] suggested, you have to replace
&&
(boolean AND) with
||
(boolean OR) operant. Why? Test it to find out:
var res1 = true && true && true;
var res2 = true && true && false;
var res3 = true && false && false;
var res4 = false && false && false;
var res5 = true || true || true;
var res6 = true || true || false;
var res7 = true || false || false;
var res8 = false || false || false;
Below query works as well:
string sSearchedValue = @"jin";
var result = xdoc.Root.Descendants("info")
.Where(x=>x.HasElements)
.Select(x=>x.Element("lastname").Value.StartsWith(sSearchedValue) ||
x.Element("sortname").Value.StartsWith(sSearchedValue) ||
x.Element("corpname").Value.StartsWith(sSearchedValue));
Returns:
True
True
False
If you would like to get corresponding nodes, replace
Select
with
Where
statement.
Returned values:
<info>
<lastname>jinesh</lastname>
<sortname>sam</sortname>
<corpname>kp</corpname>
<company>asdf</company>
<address>qwert</address>
<pincode>786678</pincode>
</info>
<info>
<lastname>manoj</lastname>
<sortname>jinu</sortname>
<corpname>kalpana</corpname>
<company>zxcv</company>
<address>bnml</address>
<pincode>12345</pincode>
</info>