我试图填写制药公司的下拉列表,如拜耳,Medley等。而且,我从DB获取这些名称,这些名称在DB中重复,但使用不同的ID。 我试图使用Linq Distinct(),但我不想使用相等比较器。 有另一种方法吗? 我的下拉列表中必须填上公司的名称和ID。 我正在尝试类似于: var x = _partnerService .SelectPartners() .Select(c => new {codPartner = c.codPartner, name = c.name}) .Distinct(); 这是在ddl显示重复的公司。 谢谢!
我有从数据库派生的以下EF类 (简化) class Product { public string ProductId; public string ProductName; public string CategoryId; public string CategoryName; } ProductId是表格的主键 。 对于由数据库devise人员做出的糟糕的devise决定(我无法修改它),我在这个表中有CategoryId和CategoryName 。 我需要一个DropDownList (独特) CategoryId作为值和CategoryName作为文本 。 所以我申请了下面的代码: product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct(); 这在逻辑上应该创build一个具有CategoryId和CategoryName属性的匿名对象。 Distinct()保证没有重复对( CategoryId , CategoryName )。 但实际上这是行不通的。 就我所了解的Distinct()作品,只有一个字段在集合中,否则它只是忽略它们…是否正确? 有没有解决办法? 谢谢! UPDATE 对不起, product是: List<Product> product = new List<Product>(); 我发现了一个替代方法来获得与Distinct()相同的结果: product.GroupBy(d => new {d.CategoryId, […]
我有一个LINQ Distinct()语句,使用我自己的自定义比较器,如下所示: class MyComparer<T> : IEqualityComparer<T> where T : MyType { public bool Equals(T x, T y) { return x.Id.Equals(y.Id); } public int GetHashCode(T obj) { return obj.Id.GetHashCode(); } } … var distincts = bundle.GetAllThings.Distinct(new MyComparer<MySubType>()); 这一切都很好,并按我的意愿工作。 出于好奇,我需要定义自己的比较器,还是可以用委托来replace它? 我以为我应该可以做这样的事情: var distincts = bundle.GetAllThings.Distinct((a,b) => a.Id == b.Id); 但是这不能编译。 有一个巧妙的把戏吗?
我想要在列表中获取不同的值,而不是通过标准的相等比较。 我想要做的是这样的: return myList.Distinct( (x, y) => x.Url == y.Url ); 我不能,在Linq中没有扩展方法可以做到这一点 – 只需要一个IEqualityComparer 。 我可以用它来破解它: return myList.GroupBy( x => x.Url ).Select( g => g.First() ); 但是,这似乎凌乱。 这也不完全相同 – 因为我只有一个键,所以我只能在这里使用它。 我也可以添加我自己的: public static IEnumerable<T> Distinct<T>( this IEnumerable<T> input, Func<T,T,bool> compare ) { //write my own here } 但是,这看起来好像写了一些应该在那里的东西。 任何人都知道为什么这种方法不在那里? 我错过了什么吗?
给出以下简单的例子: List<string> list = new List<string>() { "One", "Two", "Three", "three", "Four", "Five" }; CaseInsensitiveComparer ignoreCaseComparer = new CaseInsensitiveComparer(); var distinctList = list.Distinct(ignoreCaseComparer as IEqualityComparer<string>).ToList(); 看来CaseInsensitiveComparer实际上并没有被用来做大小写不敏感的比较。 换句话说, distinctList包含与列表相同数量的项目。 相反,我认为,例如,“三”和“三”被认为是平等的。 我是否错过了一些东西,或者这是一个Distinct运算符的问题?
有没有办法在HQL中创build一个独特的查询。 通过使用“distinct”关键字或其他方法。 我不确定是否独立是HQL的有效密钥,但是我正在寻找SQL关键字“distinct”的HQL等价物。
我试图使用基于行的限制(例如: setFirstResult(5)和setMaxResults(10) )对已经连接到其他表的Hibernate Criteria查询实现分页。 可以理解的是,数据随机被切断; 原因在这里解释。 作为解决scheme,页面build议使用“第二个sql select”而不是联接。 如何将我现有的标准查询(使用createAlias()连接)转换为使用嵌套的select?
我有一个集合: List<Car> cars = new List<Car>(); 汽车是由他们的财产CarCode唯一标识。 我有三辆车在收集,和两个相同的CarCodes。 我如何使用LINQ将这个集合转换成独特的CarCodes的汽车?
我从XML中设置了以下项目: id category 5 1 5 3 5 4 5 3 5 3 我需要这些项目的一个清楚的名单: 5 1 5 3 5 4 LINQ中如何区分类别和ID?
我正在玩LINQ来了解它,但我不知道如何使用Distinct,当我没有一个简单的列表(一个简单的列表整数很容易做,这不是问题)。 我如果想在对象的一个或多个属性的列表上使用Distinct ? 例如:如果一个对象是Person ,带有Property Id 。 我怎样才能得到所有的人,并使用对象的属性Id使用Distinct ? Person1: Id=1, Name="Test1" Person2: Id=1, Name="Test1" Person3: Id=2, Name="Test2" 我怎样才能得到Person1和Person3? 那可能吗? 如果LINQ不可能,根据.NET 3.5中的一些属性,最好的办法是拥有一个Person列表?