私はこのコードを使用して生成List<int> x
しています:List<int> y
List<Point> p
List<int> x = (from a in p select a.X).ToList();
List<int> y = (from a in p select a.Y).ToList();
x
getとy
fromのための単一の LINQ クエリはありますp
か?
私はこのコードを使用して生成List<int> x
しています:List<int> y
List<Point> p
List<int> x = (from a in p select a.X).ToList();
List<int> y = (from a in p select a.Y).ToList();
x
getとy
fromのための単一の LINQ クエリはありますp
か?
いいえ、次のようなことができます:
var tuples = p.Select(x => new Tuple<int, int>(x.X, x.Y)).ToList();
しかし、2つのクエリを使用して、これが最善の解決策であると思います:
List<int> x = (from a in p select a.X).ToList();
List<int> y = (from a in p select a.Y).ToList();
基本的にはできませんが、自分をだますことはできます。
public static class LinqEx
{
public static void ToLists<T, T1, T2>(this IEnumerable<T> source, SelectorDst<T, T1> selectorDst1, SelectorDst<T, T2> selectorDst2)
{
selectorDst1.List.AddRange(source.Select(selectorDst1.Selector));
selectorDst2.List.AddRange(source.Select(selectorDst2.Selector));
}
}
public class SelectorDst<T, TList>
{
public readonly List<TList> List;
public readonly Func<T, TList> Selector;
public SelectorDst(List<TList> list, Func<T, TList> selector)
{
this.List = list;
this.Selector = selector;
}
}
... Some place in the code
var points = new List<Point>();
var xs = new List<int>();
var ys = new List<int>();
points.ToLists(new SelectorDst<Point, int>(xs, p => p.X),
new SelectorDst<Point, int>(ys, p => p.Y));