C# Class select Xamarin 中的多个字段

C# Class select multiple fields in Xamarin

我想 select 列表中的多个字段。这是我的代码:

string[] NamesArray = Users
            .Select(i => new {  i.FirstName, i.LastName })
            .Distinct()
            .OrderByDescending(i => i.FirstName)
            .ToArray();

当我使用此代码时,错误是:“无法将类型 'anonymous type: string FirstName, string LastName []' 隐式转换为字符串 []” 我能做什么???

那是因为匿名 select 所以当你 select 喜欢 (i => new { i.FirstName, i.LastName }) 它会给你一个对象列表,每个对象都有 FirstNameLastName 不是字符串,不能是 string.

的猫

所以你应该这样做:

string[] NamesArray = Users.OrderByDescending(i => i.FirstName)
         .Select(i => i.FirstName + " " + i.LastName)
         .Distinct()
         .ToArray();

如果你想 select 匿名值那么你不能将它转换为 string[] 最好的方法是 var 比如:

var NamesArray = Users.OrderByDescending(i => i.FirstName)
             .Select(i => new { i.FirstName , i.LastName})
             .Distinct()
             .ToArray();

但它也会为您提供具有 FirstNameLastName 属性的对象列表。

但另一种解决方法是:

var NamesArray = Users.OrderByDescending(i => i.FirstName)
            .Select(i => new string[] { i.FirstName, i.LastName })
            .Distinct()
            .ToArray();
foreach(string[] str in NamesArray)
{
     string firstName = str[0];
     string lastName = str[1];
}

或:

List<string[]> NamesArray = Users.OrderByDescending(i => i.FirstName)
        .Select(i => new string[] { i.FirstName, i.LastName })
        .Distinct().ToList();

或:

IEnumerable<string[]> NamesArray = Users.OrderByDescending(i => i.FirstName)
            .Select(i => new string[] { i.FirstName, i.LastName })
            .Distinct();
foreach(string[] str in NamesArray)
{
    string firstName = str[0];
    string lastName = str[1];
}

无论如何你不能将它直接转换为 string[] 意味着 NamesArray 不能是 string[].