0

会社の各従業員を表すEmployeeというクラスがあります。

public class Employee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
}

新しい従業員リストを作成しました

public readonly List<Employee> Employees = new List<Employee>();

今、私は彼の名前でリストから従業員を見つけたいのですが、それを達成する方法がわからないので、あなたの助けは非常に感謝され、感謝されます。

4

11 に答える 11

3

LINQクエリの使用:

Employees.FirstOrDefault(emp => emp.FirstName == "Rune" && emp.LastName == "S");

これにより、その名前の最初の従業員が返されます。見つからない場合は、null。名前を持つすべての従業員を取得するには、Where代わりに次を使用します。

Employees.Where(emp => emp.FirstName == "Rune" && emp.LastName == "S");
于 2013-01-07T21:46:18.867 に答える
2

を使用した非LinqアプローチList.FindAll

List<Employee> foundEmployees = Employees
    .FindAll(e => e.LastName.Equals(empName, StringComparison.OrdinalIgnoreCase));

このアプローチを使用Equalsして、ケースを無視して検索する方法を示しました。

于 2013-01-07T21:47:52.080 に答える
1

LINQを使用できる場合は、リストをクエリするだけです。

Employees.Where(e => e.FirstName == "John" || e.LastName == "Doe");

または、リストを非常に簡単にループして、結果の別のリストに一致するものを追加することもできます。

List<Employee> matches = new List<Employee>();

foreach(var employee in Employees)
{
    if(employee.FirstName == "John" || employee.LastName == "Doe")
        matches.Add(employee);
}
于 2013-01-07T21:45:56.453 に答える
1

LINQを使用するだけです

var employee = Employees.Where(e => e.LastName == lastname).FirstOrDefault();
于 2013-01-07T21:46:10.560 に答える
1

これIEnumerable<Employee>により、名前と名前が一致する従業員が表示されます。

string firstName = "Bob";
string LastName = "Smith";
var employees = Employees.Where(e => e.FirstName == firstName && 
                                     e.LastName == lastName);

またはクエリ構文を使用する場合:

var employees = from e in Employees
                where e.FirstName == firstName && 
                      e.LastName == lastName
                select e;

その基準に一致する従業員が1人だけの場合は、次を使用しますSingleOrDefault

Employee employee = Employees.SignleOrDefault(e => e.FirstName == firstName && 
                                                   e.LastName == lastName);
于 2013-01-07T21:46:11.253 に答える
1

「彼/彼女の名前で見つける」と言うとき、あなたは例えば「ジョン」という名前のすべての人々を探しているという意味ですか?LINQを使用すると、次のようになります。

var johns = Employees.Where(e => e.FirstName == "John");

IEnumerable<Employee>これはの代わりにを返すことに注意してくださいIList<Employee>。2つの間にいくつかの違いがあります。

.Where()は、リストのクエリと操作に使用できる多くの拡張メソッドの1つです。

于 2013-01-07T21:46:24.790 に答える
1

ループを使用するか、LINQを使用できます。

この式は、名前が「Smith」の最初の従業員を示します。またはnull、この名前の人がリストに見つからない場合は、次のようになります。

var res = Employees.FirstOrDefault(e => e.LastName  == "Smith");

このループでは、「John」という名のすべての従業員を列挙できます。

foreach (var employee in Employees.Where(e => e.FirstName  == "John")) {
    ...
}

特定のフィルターに合格した従業員のリストを作成することもできます。

var smiths = Employees.Where(e => e.LastName  == "Smith").ToList();

元のリストに「Smith」が含まれていない場合、結果のリストは空になります。

LINQを使用してはならない場合は、単純なforeachループを使用できます。

foreach (var employee in Employees) {
    if (employee.LastName == "Smith") {
        ...
    }
}
于 2013-01-07T21:46:28.210 に答える
1

次のコードスニペットを使用してみてください

var firstName = "Jon";
var lastName = "Skeet";
var employees = Employees.Where(emp => emp.FirstName == firstName && emp.LastName == lastName);

正確に1人の従業員を見つけたい場合は、おそらく、Singleの代わりに使用することをお勧めしますWhere。私の場合は、これがより妥当です。その基準に一致する最初の従業員を見つけたい場合は、「Where」ではなく「First」を使用してください。

于 2013-01-07T21:46:40.613 に答える
1

http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

WHEREsimple1とsimple2の例を確認してください。

于 2013-01-07T21:47:41.320 に答える
1

これを行う最良の方法は、LINQを使用することです。

var employees = Employees.Where(e => e.FirstName.Equals("RuneS")).ToArray();
于 2013-01-07T21:48:49.317 に答える
0

ワイルドカード検索が必要な場合は、が含まれています。

Employees.Where(emp => emp.FirstName.Contains( "Rune")&& emp.LastName.Contains( "S"));

于 2015-05-08T20:14:27.027 に答える