那是因为匿名选择所以当你选择喜欢(i => new { i.FirstName, i.LastName })它会给你一个对象列表,每个对象都有FirstName,LastName它不是字符串,不能是猫string。
所以你应该做这样的事情:
string[] NamesArray = Users.OrderByDescending(i => i.FirstName)
.Select(i => i.FirstName + " " + i.LastName)
.Distinct()
.ToArray();
如果您想选择匿名值,那么您无法将其转换string[]为最佳方式,var例如:
var NamesArray = Users.OrderByDescending(i => i.FirstName)
.Select(i => new { i.FirstName , i.LastName})
.Distinct()
.ToArray();
但它也为您提供具有FirstName和LastName属性的对象列表。
但另一种解决方法是:
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[]手段NamesArraycan't be string[]。