2009-03-19 10 views
0

Ich habe C# -Code zum Auffüllen einer Dropdown-Liste in Silverlight, die gut funktioniert, außer wenn es Duplikate gibt. Ich denke, weil IEnumerable<Insurance.Claims> eine Sammlung ist, filtert sie Dubletten heraus. Wie würde ich meine LINQ-Abfrage so codieren, dass sie Duplikate akzeptiert?ADO.NET Data Services, LINQ

Meine Beispieldaten wie folgt aussieht:

-Code => Codename
FGI             Feldgeneral Initiative
SRI             Statische Ressourcen Initiative
JFI             Joint Feld Initiative - Dies wird als "überschrieben" in Ergebnisse
JFI             Joint Freund Initiative

IEnumerable<Insurance.Claims> results; 

// ADO.NET Data Service 
var claim = (from c in DataEntities.Claims.Expand("Claimants").Expand("Policies") 
      where c.Claim_Number == claimNumber 
      select c); 

DataServiceQuery<Insurance.Claims> dataServiceQuery = 
    claim as DataServiceQuery<Insurance.Claims>; 

dataServiceQuery.BeginExecute((asyncResult) => 
{ 
    results = dataServiceQuery.EndExecute(asyncResult); 

    if (results == null) 
    { 
     // Error 
    } 
    else 
    { 
     // Code to populate Silverlight form 
    } 
}); 
+0

IEnumerable ist nur eine Schnittstelle. Es tut nichts. Insbesondere filtert es keine Duplikate. –

Antwort

0

(nicht sicher, ob Sie immer noch kämpfen mit diesem aber trotzdem ...)

Ich bin mir ziemlich sicher, dass es nicht die IEnumerable-Schnittstelle ist, sondern das tatsächliche Drop-Down, das dieses Verhalten verursacht. Der Code wird als Schlüssel verwendet, und offensichtlich wird jedes Mal, wenn derselbe Code gefunden wird, das Element überschrieben.

Ich denke nicht, dass Sie dies außer Kraft setzen können, wenn Sie den Code ändern, oder verwenden Sie eine andere Kennung als Schlüsselfeld in der Dropdown-Liste.

0

Sie können einen Try-Catch-Block um dataServiceQuery.EndExecute(asyncResult) hinzufügen, um Fehler richtig zu behandeln.

+0

Dies sollte Kommentar keine Antwort sein. –

Verwandte Themen