私はこのようなリストを持っています:
Red
Red
Brown
Yellow
Green
Green
Brown
Red
Orange
私はLINQでSELECT UNIQUEをしようとしています、つまり
Red
Brown
Yellow
Green
Orange
var uniqueColors = from dbo in database.MainTable
where dbo.Property == true
select dbo.Color.Name;
次にこれを
var uniqueColors = from dbo in database.MainTable
where dbo.Property == true
select dbo.Color.Name.Distinct();
成功しませんでした。最初のselect
はすべての色を取得しますが、一意の値のみを取得するように変更するにはどうすればよいですか?
このクエリを構造化するより良い方法があれば、喜んでそのルートに進みます。
.OrderBy( "列名")を持つように編集するにはどうすればいいですか?つまり、色名のアルファベット順で、名前プロパティですか?
私はメッセージを受け取り続けます:
型引数を使用法から推測することはできません。型引数を明示的に指定してみてください。
Distinct()は順序付けを台無しにするので、その後はソートする必要があります。
var uniqueColors =
(from dbo in database.MainTable
where dbo.Property == true
select dbo.Color.Name).Distinct().OrderBy(name=>name);
var uniqueColors = (from dbo in database.MainTable
where dbo.Property == true
select dbo.Color.Name).Distinct();
クエリ内包構文を使用すると、次のように順序を達成できます。
var uniqueColors = (from dbo in database.MainTable
where dbo.Property
orderby dbo.Color.Name ascending
select dbo.Color.Name).Distinct();