1

IEnumerable<T>メソッドのパラメーターとして を持っています。Tは構造体型です。

using System;
using System.Collections.Generic;
using System.Linq;
using ...

public static class Foo
{
    internal struct CellDiff
    {
        public int RefX;
        public int RefY;
        public object OldValue;
        public object NewValue;
    }

    private static void ItemChanged(IEnumerable<CellDiff> diffs, int cellX, int cellY)
    {
        var change = from CellDiff diff in diffs
                     where diff.RefX == cellX && diff.RefY == cellY
                     select diff;

        ...
    }
}

これにより、次のエラーが発生します。

(パラメータ)IEnumerable<CellDiff> diffs

エラー:
ソース タイプ ' ' のクエリ パターンの実装が見つかりませんでしたCellDiff。' Where' が見つかりません。

私も試してみましdiffs.AsQueryable()たが、役に立ちませんでした。

私は通常、 で LINQ クエリを実行しても問題ありませんIEnumerable<T>。ここで何が起こっているのか、私は少し迷っています。

4

2 に答える 2

3

LINQ クエリ構文で型を指定するCastと、その型引数を持つ拡張メソッドへの呼び出しが作成されます。

Castどこかに独自の定義がありますか?

于 2012-10-24T08:44:05.037 に答える
1

のようにクエリを変更する必要があります。更新されたクエリは次のようになります

 var change = from diff in diffs //changed like removed "CellDiff" from this
                     where diff.RefX == cellX && diff.RefY == cellY
                     select diff;

CellDiff クエリの後に from は必要ありません

于 2012-10-24T08:34:49.977 に答える