2017-08-14 1 views
0

これは私のコードであり、簡略化したいと思います。私は従業員リストを持っていますが、CでLINQを使用して給料が最低の従業員の名前を取得したいと考えています。

int minSalary = empList.Min(e => e.salary); 
var emp = empList.Where(e => e.salary == minSalary).FirstOrDefault(); 
string empName = emp= != null ? emp= .Name : string.Empty; 
+0

これは正しい構文ではありません。 jon skeetによって書かれた 'MoreLinq'ライブラリの' MinBy'を簡略化するために –

答えて

2

あなたが給料でコレクションを注文してから最初の項目を取得することができ、最小salaryを有するものです。 FirstOrDefaultを使用して取得し、?. operator (C# 6.0)を使用してNameプロパティにアクセスします。次のように

var emp = empList.OrderBy(e => e.salary).FirstOrDefault(); 
var name = emp != null ? emp.Name : string.Empty; 
+0

あなたの返事をありがとう。この構文では、私はNameプロパティにアクセスすることができません。エラーが発生しています。1.Syntax error、 ':' expected 2.Invalid expression term '。' –

+0

@pandum - C#はあなたですか?以前の6.0の場合は –

+0

を確認してください。今私はMr.Gilad Greenさんに感謝します。 –

1
var employeeWithMinSalary = empList.OrderBy(e => e.Salary).FirstOrDefault(); 
string employeeWithMinSalaryName = employeeWithMinSalary?.Name; 
1

ソートその後、給与による収集とは、従業員の名前を選択します(FirstOrDefaultnullを返した場合) 最終Nameとしては、以前はC#6.0の場合?? operator

string name = empList.OrderBy(e => e.salary).FirstOrDefault()?.Name ?? string.Empty; 

を使用nullかもしれません:

var name = empList.OrderBy(e => e.salary) 
        .Select(e => e.Name) 
        .FirstOrDefault() ?? string.Empty; 
関連する問題