2008/11/15(Sat) 21:52:40 編集(投稿者)
■No27840 (Hongliang さん) に返信
> where Array.Exists(bb, x => x == p.X)
> とか?
LINQ 書き方の問題と言うよりは,
値型配列の要素を列挙したらそれがコピーで困っている
という話のような気がします.
解決策としては,
配列要素そのものを列挙するのではなくインデックスを列挙するか,
各要素を参照型 (例えば StrongBox<T>) でラップしてしまうかですかねぇ.
とりあえず参照型でラップしてみた例です.
DataSource とか使ったことがないので,
これでご希望の条件に合っているのかよく分かりませんが.
StrongBox<Point>[] wrapped_aa = new StrongBox<Point>[]{
new StrongBox<Point>(new Point(11,111)),
new StrongBox<Point>(new Point(22,222)),
new StrongBox<Point>(new Point(33,333)),
new StrongBox<Point>(new Point(44,444)),
new StrongBox<Point>(new Point(55,555))};
int[] bb = { 22, 44 };
// join を使ってもよい
var seq = from a in wrapped_aa
from b in bb
where a.Value.X == b
select a;
foreach (var item in seq)
{
item.Value.Y = 0;
}
foreach (var item in seq)
{
Console.WriteLine(item.Value);
}
// 結果
// {X=22,Y=0}
// {X=44,Y=0}