J'ai une table avec deux colonnes qui seront utilisées comme critères de filtrage. En utilisant Linq to Entities, je veux passer deux valeurs et toujours retourner la correspondance la plus proche. Par exemple, (1,2) devrait renvoyer (1,2) non (null, 2) comme le plus proche. Si aucune valeur ne trouve de correspondance, la correspondance de colonne Null, Null est utilisée.Utilisation de Linq to Entities pour trouver la meilleure correspondance dans le tableau
Voici l'exemple de code.
Si 3,3 est passé dans le premier Data (null, null) doit être retourné car il n'y a pas de correspondance.
Si 1,3 est transmis, la deuxième donnée (1, null) doit être renvoyée.
Si 3,2 est transmis, la troisième donnée (null, 2) doit être renvoyée.
Si 1,2 est transmis, la quatrième donnée (1,2) doit être retournée. Est-ce possible dans une requête Linq, car elle génère un hit de base de données?
public class Data
{
public string prop1 { get; set; }
public string prop2 { get; set; }
}
static void Main(string[] args)
{
List<Data> datas = new List<Data>
{
new Data
{
prop1 = null,
prop2 = null
},
new Data
{
prop1 = "1",
prop2 = null
},
new Data
{
prop1 = null,
prop2 = "2"
},
new Data
{
prop1 = "1",
prop2 = "2"
}
};
}
Cela ne couvre pas le cas où il n'y a pas de correspondance pour prop1 ou prop2 et je veux retourner l'entrée null, null. – Kenoyer130
Hrm, juste l'ajouter en tant que vérification nulle supplémentaire? a changé l'exemple à montrer, si vous voulez qu'il obtienne la première valeur de l'ensemble, supprimez simplement la ligne where complète à la place. – Doggett
Cela ne fonctionne pas non plus si l'ordre des données est modifié dans la liste:/Par exemple, la commutation des entrées 3 et 4 entraînera le renvoi (3,2) (1,2). – Kenoyer130