Linq to sql 有什么办法可以实现消除列重复?
比如数据库里有一表,有两个字段:ID User
1 小白
2 小红
3 小白
过滤User列为小白的重复项后,我想要得到:
ID User
1 小白
2 小红
如果写db.linq.customer.Distinct<customer>();这样只能是每行全部匹配过滤,请问我应该怎么做?提前祝大家新年快乐,来年发财! --------------------编程问答--------------------
--------------------编程问答-------------------- 楼上的很强。。。 --------------------编程问答-------------------- 真的很强,谢谢了! --------------------编程问答-------------------- (from h in HotelBasicInformation select h.ContinentId).Distinct() --------------------编程问答-------------------- 最后筛选的结果后面加个Distinct()方法就可以了,很简单的 --------------------编程问答-------------------- 你想要的应该是按user分组,取每组的第一个,如果按照1楼的做法,是不是每一个字段都得写一个自定义比较呀?有现成的东西,为什么不用:
//自定义比较符
public class MyComparer : IEqualityComparer<Customer>
{
public bool Equals(Customer x, Customer y)
{
return (x.User == y.User);
}
public int GetHashCode(User obj)
{
return obj.ToString().GetHashCode();
}
}
//消除重复数据
IEnumerable<Customer> CustomerDistinctList = db.Customers.ToList().Distinct(new MyComparer ());
var o = from r in xe.Descendants("customer")
group r by r.Element("User").Value into g
select g.OrderBy(r=>r.Element("User").Value).FirstOrDefault();
FirstOrDefault()这个地方如果改成Take就可以取前几个,例如每班的前三名。
如果改成Skip(),可以取中间的,例如10-20名 --------------------编程问答-------------------- 说明:我上面是基于xml做的,因为我是写例如,附我的测试xml
<?xml version="1.0" encoding="utf-8" ?>
<customers>
<customer>
<ID>1</ID>
<User>小白</User>
</customer>
<customer>
<ID>2</ID>
<User>小红</User>
</customer>
<customer>
<ID>3</ID>
<User>小白</User>
</customer>
</customers> --------------------编程问答--------------------
跟LZ一起学习... --------------------编程问答-------------------- 跟着你们学习,不错 --------------------编程问答--------------------
都自定义了 --------------------编程问答-------------------- 加个Distinct()方法不就行了?
http://msdn.microsoft.com/zh-cn/library/vstudio/bb348456.aspx
补充:.NET技术 , LINQ