如何在带有嵌入式列表的列表上使用 Linq orderby
How to use Linq orderby on list with embedded list
我的列表包含地址,我想相应地对列表进行排序。我遇到的问题是列表中有一个街道行列表项,它允许零个或多个街道地址行。我可以使用此命令轻松地对所有其他元素进行排序:
**C#**
Sites == Sites.OrderBy(x => x.SiteName).ThenBy(x => x.State).ThenBy(x => x.City).ThenBy(x => x.Zip).ToList
**VB.NET**
Sites = Sites.OrderBy(Function(x) x.SiteName).ThenBy(Function(x) x.State).ThenBy(Function(x) x.City).ThenBy(Function(x) x.Zip).ToList
大多数地址在 StreetLines 列表中包含一个值,但不是全部。编译器允许我为 Streetlines 添加另一个 thenby 参数,但我不确定它会做什么。假设有多个地址具有此处显示的值:
1. Streetline.Count = 0
2. Streetline.Count = 2 (0) = "1234 Main St." (1) = "6th Floor"
3. Streetline.Count = 1 (0) = "P.O. Box 9999"
4. Streetline.Count = 2 (0) = "1234 Main St." (1) = "4th Floor"
5. Streetline.Count = 1 (0) = "101 Pacific Blvd."
会重新排序还是会出现运行时错误?假设所有其他单值字段都相同,地址的顺序是什么?
.OrderBy() 需要为每个元素生成一个可排序值(用于排序的 IComparable 值)。
因此,如果您的元素有一个字符串列表(街道线)- 您需要编写一个函数来为每组街道线生成一个值/排名字符串。
简单的例子:Sites.OrderBy(x => x.StreetLines?.FirstOrDefault()); //选择第一条可用的街道线
.ThenBy() 只是次要组排序(例如,如果两个站点具有相同的邮政信箱),并且在相同的基础上工作(每个元素的单个可排序值)。
主要是弄清楚你的数据和你实际要实施的排名方案。
我的列表包含地址,我想相应地对列表进行排序。我遇到的问题是列表中有一个街道行列表项,它允许零个或多个街道地址行。我可以使用此命令轻松地对所有其他元素进行排序:
**C#**
Sites == Sites.OrderBy(x => x.SiteName).ThenBy(x => x.State).ThenBy(x => x.City).ThenBy(x => x.Zip).ToList
**VB.NET**
Sites = Sites.OrderBy(Function(x) x.SiteName).ThenBy(Function(x) x.State).ThenBy(Function(x) x.City).ThenBy(Function(x) x.Zip).ToList
大多数地址在 StreetLines 列表中包含一个值,但不是全部。编译器允许我为 Streetlines 添加另一个 thenby 参数,但我不确定它会做什么。假设有多个地址具有此处显示的值:
1. Streetline.Count = 0
2. Streetline.Count = 2 (0) = "1234 Main St." (1) = "6th Floor"
3. Streetline.Count = 1 (0) = "P.O. Box 9999"
4. Streetline.Count = 2 (0) = "1234 Main St." (1) = "4th Floor"
5. Streetline.Count = 1 (0) = "101 Pacific Blvd."
会重新排序还是会出现运行时错误?假设所有其他单值字段都相同,地址的顺序是什么?
.OrderBy() 需要为每个元素生成一个可排序值(用于排序的 IComparable 值)。
因此,如果您的元素有一个字符串列表(街道线)- 您需要编写一个函数来为每组街道线生成一个值/排名字符串。
简单的例子:Sites.OrderBy(x => x.StreetLines?.FirstOrDefault()); //选择第一条可用的街道线
.ThenBy() 只是次要组排序(例如,如果两个站点具有相同的邮政信箱),并且在相同的基础上工作(每个元素的单个可排序值)。
主要是弄清楚你的数据和你实际要实施的排名方案。