我正在创建一个Distinct扩展方法,我可以传递如下标准.
persons.Distinct(p => p.Name);
Run Code Online (Sandbox Code Playgroud)
我从网上获得了代码,但我很难理解其目的Func<T, TResult>.此外,当我说p => p.Name我发送String Name或我发送完整的Person对象?这是新的Distinct方法:
public static class ExtensionMethods
{
public static IEnumerable<T> Distinct<T>(
this IEnumerable<T> list, Func<T,object> checker)
{
return list.Distinct(new GenericComparer<T>(checker));
}
}
public class GenericComparer<T> : IEqualityComparer<T>
{
private Func<T, object> _checker;
public GenericComparer(Func<T,object> checker)
{
_checker = checker;
}
public bool Equals(T x, T y)
{
return _checker(x).Equals(_checker(y));
}
public int GetHashCode(T obj)
{
return _checker(obj).GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
以下是用法:
static void Main(string[] args)
{ …Run Code Online (Sandbox Code Playgroud) 简单问:如何让文本框显示值.item.LastName上的代码失败
@model List<Mvc2010_11_12.Models.Employee>
@{
var grid = new WebGrid(source: Model,defaultSort: "FirstName",rowsPerPage: 3);
}
<div id="grid1">
@grid.GetHtml(columns: grid.Columns(
grid.Column("LastName"),
grid.Column(format: (item) => Html.TextBox("LastName", item.LastName))
))
</div>
Run Code Online (Sandbox Code Playgroud)