I currently have a list that contains the following
CountryCode (string)
CountryStr (string)
RegionStr (string)
RegionID (int)
AreaStr (string)
AreaID (int)
This is a flattened set of linked data (so basically the results of a joined search that ive stored)
The MVC route will only pass one string which I then need to match up to the data at the right level in the heirachy.
So I’m trying to query the CountryStr then if it doesn’t produce results the region then the area; but I need to do that bit of the query and for instance…
var datURL = (from xs in myList
//query 1
where xs.RegionStr == rarREF
select new
{
regionID = xs.RegionId,
CountryID = xs.CountryCd
}
//IF theres no results
where xs.AreaStr == rarREF
select new
{
AreaID = xs.AreaID
regionID = xs.RegionId,
CountryID = xs.CountryCd
}
).ToList();
The only way I see of doing this at the moment is running each query separately then checking which returned values and using that one. I’m hoping there’s a cleverer, cleaner method.
It won’t be very easy to read, but you could do this in a single pass using something like this:
It might also be easier to read the query if it’s rewritten slightly:
If we save the comparison result, we can reuse it later. I also added a cast to
int?to show how you could use a nullable value instead of using 0 as your “no Area” value.