2017-05-31 53 views
-3

我有这段代码。Linq列表到逗号的字符串

var userListResult = from user in userList 
          from role in user.AspNetUsers.AspNetRoles 
          where role.Id == ((int)model.Roles).ToString() 
          select new UserManageViewModel.UserViewModel() 
          { 
           Id = user.UserId, 
           Email = user.AspNetUsers.Email, 
           Name = user.FirstName + " " + user.LastName, 
           IsAdviser = user.AspNetUsers.AspNetRoles.AsQueryable().Any(r => r.Id == ((int)eCareRoles.Adviser).ToString()), 
           IsAdmin = user.AspNetUsers.AspNetRoles.AsQueryable().Any(r => r.Id == ((int)eCareRoles.Admin).ToString()), 
           Company = user.UserCompanies != null ? user.UserCompanies.Name : String.Empty, 
           Role = model.Roles, 
           ListIfRoles = user.AspNetUsers.AspNetRoles.Select(x => x.Name).Aggregate((i, j) => i + "," + j) 

          }; 

我需要用逗号获得ListIfRoles字符串。但我总是得到错误 “LINQ to Entities does not recognized the method'System.String Aggregate [String](System.Collections.Generic.IEnumerable 1[System.String], System.Func 3 [System.String,System.String,System.String])''方法,并且这种方法不能转换成商店表达式。“

我试过string.Join(“,”,列表),尝试转换为数组,然后加入或聚合 - 但它总是错误。

另外我试过这个`用户。

AspNetUsers.AspNetRoles.Select(x => x.Name).AsEnumerable().Aggregate((i, j) => i + "," + j) 

但错误再次。 请帮忙。

+0

'的string.join( “”,user.AspNetUsers.AspNetRoles.Select(X => x.Name).ToArray())' - 加入带有一个数组。 – john

+0

“LINQ to Entities does not recognized the method'System.String Join(System.String,System.String [])'method,this method can not be translated into into store expression。” –

回答

-2

可以尝试,

String.join(",",user.AspNetUsers.AspNetRoles.Select(x => x.Name).ToArray()) 
+1

“LINQ to Entities does not recognized the method'System.String Join(System.String,System.String [])'method,this method can not be translated into a store expression。” –