2
var person = People.SingleOrDefault(p => p.Name == parameter);
SelectedPerson = person ?? DefaultPerson

これは一言で書けるでしょうか?返されるデフォルト要素を提供できSingleOrDefaultますか?

このようなものを探しています (2 番目の引数は、私が提供する既定の要素です)。

var person = People.SingleOrDefault(p => p.Name == parameter, DefaultPerson);

このソリューションは、値の型 (int、double、enum、structs など) でも機能するはずです。

4

4 に答える 4

-1

何も見つからない場合にインスタンスを提供する拡張メソッドを作成できます。

public static class PersonExtensionMethod
{
    public static T SingleOrInstance<T>(this IEnumerable<T> source, Func<T, bool> precate)
    {
        var person = source.SingleOrDefault(precate);

        if (person == null)
            return (T)Activator.CreateInstance(typeof(T));

        return person;
    }
}

次のように呼び出します。

 List<Person> persons = new List<Person> { new Person(), new Person(), new Person() };

 var foundPerson = persons.SingleOrInstance<Person>(p => p.Name == "bla");
于 2013-04-26T18:13:27.033 に答える