在linq查询中使用sharepoint Taxonomy值作为排序参数
本文关键字:排序 参数 Taxonomy sharepoint 查询 linq | 更新日期: 2023-09-27 18:28:12
我的问题如下:
- 我正在对IEnumerable<custItem>即我的客户列表OrderByDescending
- 我将上述查询的输出作为IOrderedEnumerable<custItem>
- 之后,我将使用一系列ThenByDescending查询对其进行排序。其中一个查询正在使用"TaxonomyFieldValue"类型的Sharepoint分类字段
我正在使用以下代码:
orderedCustomerList = orderedCustomerList.ThenByDescending(o =>
{
if (o.Country != null && currentCustomerItem.Country != null)
{
if (o.Country.Label == currentCustomerItem.Country.Label)
{
return o;
}
return null;
}
return null;
});
有时我会遇到以下错误-至少有一个对象必须实现Icomparable。
有时它是有效的。
我还尝试使用以下代码:
orderedCustomerList = orderedCustomerList.ThenByDescending(o => o.Country.ToString().Contains(currentCustomerItem.Country.Label));
Country是custItem类的TaxonomyFieldValue类型成员。
我得到以下错误-对象引用没有设置为对象的实例。
提前谢谢。任何帮助都将不胜感激。
我已经解决了这个问题。我选择回答这个问题,而不是添加评论。我使用以下方法将custItem类的这个taxonomyFieldvalue类型成员转换为taxonomy FieldvalueCollection:
private TaxonomyFieldValueCollection TaxonomyFieldToCollection(object item)
{
if (item != null)
{
TaxonomyFieldValue temp = item as TaxonomyFieldValue;
TaxonomyFieldValueCollection tempCol = new TaxonomyFieldValueCollection(temp.ValidatedString);
return tempCol;
}
else
{
TaxonomyFieldValueCollection tempCol = new TaxonomyFieldValueCollection(string.Empty);
tempCol.Clear();
return tempCol;
}
}
然后我使用以下命令进行排序:
foreach (TaxonomyFieldValue value in currentCustomerItem.Country)
{
orderedCustomerList = orderedCustomerList.ThenByDescending(o => o.Country.ToString().Contains(value.Label));
}
谢谢大家。