0

私の問題は次のとおりです。

  1. OrderByDescending を使用して、IEnumerable<custItem>、つまり顧客リストを並べ替えています。
  2. 上記のクエリの出力を IOrderedEnumerable<custItem> として取得しています。
  3. その後、一連の ThenByDescending クエリを使用して並べ替えています。クエリの 1 つは、タイプ '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;
                    });

次のエラーが発生することがあります - 少なくとも 1 つのオブジェクトが Icomparable を実装する必要があります。

時々それはうまくいきます。

次のコードも使用しようとしました:

orderedCustomerList = orderedCustomerList.ThenByDescending(o => o.Country.ToString().Contains(currentCustomerItem.Country.Label));

Country は custItem クラスの TaxonomyFieldValue 型メンバーです。

次のエラーが表示されます - オブジェクト参照がオブジェクトのインスタンスに設定されていません。

前もって感謝します。どんな助けでも大歓迎です。

4

1 に答える 1

0

私はこの問題を解決しました。コメントを追加する代わりに、この質問に答えることにしました。次のメソッドを使用して、この custItem クラスの taxonomyFieldvalue 型メンバーを taxonomyFieldvalueCollection に変換しました。

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));
}

皆さんに感謝します。

于 2013-08-21T03:55:23.350 に答える