2014-04-26 39 views
1

我有這樣的查詢:ORDERBY在LINQ字符串列導致錯誤

List<PresentClass.userpresentation> q = 
    (dbconnect.tblUsers.Where(
     i => i.permission == permission) 
     .Select(arg => new PresentClass.userpresentation { 
     email = arg.email, pass = arg.password, 
     name = arg.name+" "+arg.family })).ToList(); 

添加排序依據後:

List<PresentClass.userpresentation> q = 
    (dbconnect.tblUsers.Where(
    i => i.permission == permission) 
    .Select(arg => new PresentClass.userpresentation { 
    email = arg.email, pass = arg.password, 
    name = arg.name+" "+arg.family })).OrderBy(i=>i.family).ToList(); 

我得到這個錯誤:

會員 'Novitiate.AdminPortal.PresentationClass.PresentClass + userpresentation.family' 不支持轉換爲SQL。

我的類:

public class userpresentation 
{ 
    public string username { set; get; } 
    public string email { set; get; } 
    public string family { set; get; } 
    public string name { set; get; } 
    public string pass{ set; get; } 
} 

爲什麼?

+0

因爲'userpresentation'上沒有'family'屬性 –

+0

我的班級中有家庭財產 –

回答

1

看起來它試圖將OrderBy()轉換爲投影中的SQL語句。

嘗試在Select()之前添加OrderBy()(如果您希望數據庫執行排序操作),或者如果要在加載集合後執行排序操作,可以在ToList()之後添加。

var q = (dbconnect.tblUsers.Where(i => i.permission == permission) 
          .OrderBy(i=>i.family) 
          .Select(arg => new PresentClass.userpresentation { 
           email = arg.email, 
           pass = arg.password, 
           name = arg.name+" "+arg.family 
          })).ToList();