Ich habe eine LINQ Joining Anweisung in C#, mit dem ich versuche, eine Liste von Strukturen mit zwei Listen von Zeichenketten Linq:C# LINQ zwischen mehreren Listen beitreten
public struct ll
{
public int index;
public string one;
public string two;
}
public List <ll> list1; //{"0,a, ", "1,," , "2,a,dog" , "3,,horse"}
public List <string> list2; //{"a","b"}
public List <string> list3; //{"cat","mouse","dog"}
Die Idee ist, dass in list1 nicht alle structs enthält einen Wert, also auf Index 0 nur list1.one hat einen Wert, der "a" ist, list1.two ist leer. Auf Index 1 sind sowohl list1.one als auch list1.two leer. Auf Index 2 haben sowohl list1.one als auch list.two Werte. Auf Index 3 hat nur list.two einen Wert.
Mit unten Ich versuche, diese drei Listen
var query = from x in list1
join y1 in list2 on x.one equals y1
join y2 in list3 on x.two equals y2
select x.index;
Mit dieser Erklärung beitreten den Join wird nur geschehen, wenn list1.one ein Element in list2 Spiele und list1.two paßt ein Element in list2. Allerdings würde ich gerne sehen, dass, wenn nur list1.one gefüllt ist, aber list1.two leer ist, der Join nur ein Element in list2 mit list1.one abgleichen wird, aber mit allen Elementen in list3, so nehmen die leere Liste1.zwei nicht berücksichtigt.
EDIT:
Lassen Sie mich die Frage anders formulieren. Mein Ziel ist es, dass das Programm einen vom Benutzer eingegebenen Satz liest, Infinitive, Substantive, Artikel und Adverbien in separaten Listen speichert und versucht, die beste Antwort oder Antwort für den Benutzer basierend auf dem Beitritt aller Listen zu finden.
So sollte list1 aussehen
public struct ll
{
int index;
string infinitive;
string noun;
string article;
string adverb;
string answer;
}
public List <ll> list1;
mit folgenden Daten:
Wenn zum Beispiel der Benutzer den Satz eingibt Join-Skript sollte zwei mögliche ‚Was können Sie finden‘ zurückkehren Antworten:
"Ich kann diese Informationen finden" und "Was soll ich finden?"
Auf dem Satz: „Was finden Sie hier“
es nur zurückkehren würde:
Aber wenn der Benutzer Askes „Ich habe diese Informationen finden kann“: „Was weißt du über dieses Hobbit“ es zurückkehren würde nichts als die Kombination „wissen“ und „die“ ist nicht bekannt, wo als „was Sie über Hobbit wissen“ mit „das weiß ich über“
Hope this ist klarer Know
Können Sie uns die resultierenden Daten zeigen, die Sie in den Listen in Ihrem Beispiel sehen möchten? –
Hallo Bradley. Zum Beispiel: "a" (aus Liste1) würde mit {"a", "Katze", "Maus", "Hund"} übereinstimmen und "" (aus Liste1) würde mit {"a", "b" übereinstimmen, "Katze", "Maus", "Hund"}. Am Ende würde x.index alle Indizes von list1 zurückgeben, die mit list2 und list3 verknüpft sein könnten. Daher würde es Index 0, 1 und 2 zurückgeben, da alle Elemente einschließlich Leergut zugeordnet werden könnten. Es würde niemals Index 3 von list1 zurückgeben, da es in list3 kein "Pferd" finden konnte. – HB1963
Also stimmt ein leerer String mit allem überein? –