【发布时间】:2026-02-23 04:40:01
【问题描述】:
我有以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrderByElementSubelement
{
class Program
{
static void Main(string[] args)
{
List<Place> places = new List<Place>();
places.Add(new Place { Address = "Fifth Street", Score = 29, Houses = new List<House> { new House { Owner = "Mike", Score = 32 }, new House { Owner = "Bobby", Score = 3 } } });
places.Add(new Place { Address = "Sixth Street", Score = 29, Houses = new List<House> { new House { Owner = "Mike", Score = 42 }, new House { Owner = "Ted", Score = 45 } } });
places.Add(new Place { Address = "Seventh Street", Score = 29, Houses = new List<House> { new House { Owner = "Randy", Score = 84 }, new House { Owner = "William", Score = 1 } } });
var placesWithMikesHouseOrderedByMikesHouseScore = places.Where(x => x.Houses.Where(y => y.Owner == "Mike").Count() > 0).OrderBy(x => x.Houses.Where(y => y.Owner == "Mike").Select(z => z.Score)).ToList();
}
public class Place
{
public string Address { get; set; }
public int Score { get; set; }
public List<House> Houses { get; set; }
}
public class House
{
public string Owner { get; set; }
public int Score { get; set; }
}
}
}
它抛出这个异常:
An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll
Additional information: At least one object must implement IComparable.
我正在尝试根据 Mike 的房子在那个地方的分数来查询 Mike 的房子的地方(你可以从上面看到这个想法)。一个地方有一个房屋清单。 重要提示:您可以假设每个业主都不能拥有超过一所房子!
为什么它要一个对象在这里实现 IComparable,我怎样才能使这个查询起作用?
【问题讨论】:
标签: c# .net linq exception linq-to-objects