日期:2014-05-17  浏览次数:20710 次

Linq 不熟悉,请教大家一个linq问题
有数据集 List<photo> listPhoto

Photo类 定义如下:
UserId    --用户编号
UserName  --用户姓名
PhotoPath --图片路径
....


现在 listPhoto 中有  5000多条数据,请问如何用Linq查出所有照片所有者唯一用户的编号和姓名。

------解决方案--------------------

  private class PhotoComparer : IEqualityComparer<Photo>
        {
            public bool Equals(Photo x, Photo y)
            {
                return x.UserId == y.UserId && x.UserName  == y.UserName  ;
            }
            public int GetHashCode(Photo obj)
            {
                if (obj == null)
                {
                    return 0;
                }
                else
                {
                    return obj.ToString().GetHashCode();
                }
            }
        }

  list = list.Distinct(new PhotoComparer ()).ToList(); <--这个就是了你要的唯一


------解决方案--------------------
List<photo> listPhoto;
var query = from p in listPhoto
            group p by p.UserId into g
            where g.Count() == 1
            select g;