J'ai actuellement une liste qui contient les éléments suivantsComment faire si déclaration de requête LINQ
CountryCode (string)
CountryStr (string)
RegionStr (string)
RegionID (int)
AreaStr (string)
AreaID (int)
Ceci est un ensemble aplaties de données liées (donc en gros les résultats d'une recherche jointe que ive stockées)
La route MVC passera seulement une chaîne que je dois ensuite faire correspondre aux données au bon niveau dans l'heirachy. Donc j'essaie d'interroger le CountryStr alors s'il ne produit pas de résultats la région alors la région; mais je dois le faire peu de la requête et, par exemple ...
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();
La seule façon que je vois de faire cela au moment est en cours d'exécution chaque requête séparément puis vérifier qui a retourné des valeurs et en utilisant celle-ci. J'espère qu'il y a une méthode plus intelligente et plus propre.
L'échange de null pour default (int) comme dans çağdaş semble faire à peu près ce que j'attends. Est-ce que la déclaration where indique si elle ne renvoie aucun résultat, essayez AreaStr comme je le pense? et je suppose que je pourrais facilement travailler en ajoutant plus: op –
Nous supposons qu'une chaîne de région ne correspondra jamais à une chaîne de zone, donc où retournera l'élément de liste où la région correspond ou la zone allumettes. Ensuite, dans la sélection, nous vérifions à nouveau si la correspondance est une zone ou une région. Je vais éditer avec une version qui pourrait être plus facile à lire. – dahlbyk
Je suis très impressionné par ce qui peut être réalisé avec cette alouette linq. joliment sucré. Merci pour votre aide! –