レコード全体ではなく、特定の列の値によって異なるレコードを取得する簡単なLINQクエリはありますか?LINQ列の値によって固有の値が設定される
誰かが別の値でリストをフィルタリングする方法を知っていますか?
レコード全体ではなく、特定の列の値によって異なるレコードを取得する簡単なLINQクエリはありますか?LINQ列の値によって固有の値が設定される
誰かが別の値でリストをフィルタリングする方法を知っていますか?
最初に単一の値を選択し、次にDistinctを実行します。
レコード全体が必要な場合は、group x by into y
を使用する必要があります。 First
、Max
、Average
などの適切な集計関数を見つけて、グループ内の他の値の1つを選択する必要があります。
from item in table
group item by item.TheSingleValue into g
select new { TheSingleValue = g.Key, OtherValue1 = g.First().OtherValue1, OtherValue2 = g.First().OtherValue2 };
OPのように、アイテムだけでなく、レコード全体が返されるように聞こえます – LukeH
morelinqのようなライブラリを使用できます。 DistinctBy()
メソッドに興味があります。
var query = records.DistinctBy(record => record.Column);
これ以外の場合は、手動で行うことができます。
var query =
from record in records
group record by record.Column into g
select g.First();
2番目のクエリでオーダーを追加する方法は? –
あなたはされたIEqualityComparerインターフェイスの実装作ることができます:
public class MyObjectComparer : IEqualityComparer<MyObject>
{
public bool Equals(MyObject x, MyObject y)
{
return x.ColumnNameProperty == y.ColumnNameProperty;
}
public int GetHashCode(MyObject obj)
{
return obj.ColumnNameProperty.GetHashCode();
}
}
をした別個のメソッドにインスタンスを渡します。
var distinctSource = source.Distinct(new MyObjectComparer());
あなただけのただの異なる列を返すようにしたいですか、または他の値も? –