2011-01-04 7 views
2

私はDrawObject[]のリストを持っています。各DrawObjectにはRectangleプロパティがあります。ここに私のイベントがあります:リストから<Rectangle[]>と長方形を選択する方法

"????"の代わりに私の最終的な選択コマンドを正確にはっきりさせていません。また、エラーが発生しました:cannot convert IEnumerable<int> to bool

配列のリストに対してlinqクエリを実行することに関するいくつかの質問を読んだが、これで間違っていることを得ることはできません。どんな助け?

編集:
実装に関する私の意図が明確でないことに対する謝罪。

現在、マウスの位置が含まれているDrawObjectを選択します。

+1

正確に何をしようとしていますか?期待される結果が何であるかははっきりしない。サンプルの入出力は、... – Ani

答えて

4

あなたがしようとしていることはまったく明確ではありません。私あなたが容疑者のようなものとします

var drawObjects = from array in matrix 
        from item in array 
        where item.Rectangle.Contains(e.Location) 
        select item; 

を...しかし、そうでないかもしれません。あなたは、クエリの結果で何をしようとしているのか、何のためにあるのかを示していません。this[column, row]

あなたはほぼ確実に最初の場所で、リストの容量を使用することにしたくない - それはあなたがCountに興味を持っている可能性が高いですが、IEnumerable<T>としてリストを使用すると、とにかく、おそらく良いです。

編集:上記のクエリは、すべてdrawObjectsの矩形には特定の場所が含まれています。あなたはほぼ確実にFirst,FirstOrDefault,SingleまたはSingleOrDefaultのようなものを使用したいと考えています。たぶん

var drawObject = (from array in matrix 
        from item in array 
        where item.Rectangle.Contains(e.Location) 
        select item) 
       .SingleOrDefault(); 

if (drawObject != null) // We found one 
{ 
    ... 
} 
+0

明確ではないことにお詫び申し上げます。現在マウスの位置を含む 'Canvas.DrawObject'を選択したいと思います。 – IAbstract

+0

@dboarman:さて、1つのオブジェクトを見つけるために私の編集を見てください。 –

1
var tile = matrix.SelectMany(x => x) 
       .Where(x => x.Rectangle.Contains(e.Location)); 
0

:たとえば

....Select(y => y); 

しかし、本当にあなたがやっていることを伝えるのは難しいです。そして、最初のWhere節は、節のラムダ式がboolになりますが、ラムダ式がIEnumerable<T>になっているので動作しません。私はすべて間違っているわけではない。

関連する問題