2010-02-09 5 views
7

Gibt es jemanden, der weiß, wie wir Kollationsproblem in ausgewählter LINQ-Abfrage lösen können? Ich erhalte diesen Fehler, wenn ich Daten in linq auswählen möchte.Kollatierungskonflikt

Kann den Sortierungskonflikt zwischen „SQL_Latin1_General_CP1_CI_AS“ lösen und „Latin1_General_CI_AS“ in der gleich Betrieb

var lstData = from s in dataTrackDB.datas 
       join b in dataTrackDB.brandDatas on i.brandcode equals b.brandcode 
       join b in dataTrackDB.brandDatas on i.brandcode equals b.brandcode 
       join b in dataTrackDB.brandDatas on i.brandcode equals b.brandcode 
       join m in dataTrackDB.mktDatas on s.mktcode equals m.mktcode 
       select new dataView { 
        Account=m.account, 
        brandcode=b.brandcode, 
        commodity=s.commodity, 
        date=s.date, 
        daysvalid=s.daysvalid, 
        mfrcode=b.mfrcode, 
        mktcode=s.mktcode, 
        price=s.price, 
        prodid=s.prodid, 
        statecode=s.statecode, 
        subcommodity=s.subcommodity, 
        supprecode=s.supprecode, 
        units =s.units 
       }; 

lstData = lstData.AsQueryable().Where(x => x.mfrcode == mfr); 

return lstData.Take(100).ToList(); 
+0

Sie sicher, dass der Fehler in Linq sind? klingt mehr wie ein SQL Server one ... –

+0

Ändert die Sortierung eine Option? AFAIK 'collate database_default' wird nicht über Linq-to-SQL unterstützt. –

+0

Ich habe Qury aus verschiedenen Tabellen von verschiedenen Servern ausgewählt und ihre Sortierreihenfolge ist unterschiedlich. in meiner Auswahl LINQ Abfrage bekomme ich diesen Fehler – Naseem

Antwort

4

Das Problem ist in Linq nicht aber in Ihrer Datenbank

Sie können zum Beispiel eine Ansicht erstellen daß auf diese Weise schließt sich und die die Daten in linq aus der Ansicht wählen

SELECT * FROM T1 
INNER JOIN T2 ON 
T1.Name COLLATE Latin1_General_CI_AS = T2.Name COLLATE Latin1_General_CI_AS 

oder die Daten zuerst wählen in linq2sql separat für jede Tabelle und dann mit linq2object

+0

Die meisten von uns kennen die Syntax in SQL, aber was ist, wenn die linq Abfrage Syntax ??? –

0

hinzufügen COLLATE DATABASE_DEFAULT am Ende der Abfrage beitreten