相关疑难解决方法(0)

LINQ对特定属性的Distinct()

我正在玩LINQ来了解它,但是当我没有一个简单的列表时,我无法弄清楚如何使用Distinct(一个简单的整数列表很容易做到,这不是问题).我想在对象的一个多个属性上使用对象列表中的区别

示例:如果对象是Person,则使用Property Id.如何获取所有Person并使用对象Distinct的属性Id

Person1: Id=1, Name="Test1"
Person2: Id=1, Name="Test1"
Person3: Id=2, Name="Test2"
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到Person1和Person3?那可能吗?

如果LINQ不可能,那么Person在.NET 3.5 中依赖于某些属性的列表最好的方法是什么?

c# linq distinct .net-3.5

1002
推荐指数
15
解决办法
80万
查看次数

LINQ选择与匿名类型不同

所以我有一组对象.确切的类型并不重要.从中我想提取一对特定属性的所有唯一对,因此:

myObjectCollection.Select(item=>new
                                {
                                     Alpha = item.propOne,
                                     Bravo = item.propTwo
                                }
                 ).Distinct();
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:在这种情况下会不会使用默认对象equals(这对我来说没用,因为每个对象都是新的)或者可以告诉它做一个不同的equals(在这种情况下,Alpha和Bravo的值相等) =>相等的实例)?有没有办法实现这个结果,如果不这样做的话?

c# linq equality anonymous-types distinct

147
推荐指数
3
解决办法
10万
查看次数

使用LINQ创建字典并避免"已添加相同键的项目"错误

我想在字典中找到一个键并在找到它时替换该值,或者如果不是则添加键/值.

码:

public class MyObject
{

    public string UniqueKey { get; set; }
    public string Field1 { get; set; }
    public string Field2 { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

LINQ解决方案(抛出An item with the same key has already been added.):

Dictionary<string, MyObject> objectDict = csvEntries.ToDictionary(csvEntry => csvEntry.ToMyObject().UniqueKey, csvEntry => csvEntry.ToMyObject());
Run Code Online (Sandbox Code Playgroud)

ForEach解决方案(工作):

Dictionary<string, MyObject> objectDict = new Dictionary<string, MyObject>();
foreach (CSVEntry csvEntry in csvEntries)
{

    MyObject obj = csvEntry.ToMyObject();

    if (objectDict.ContainsKey(obj.UniqueKey))
    {
        objectDict[obj.UniqueKey] = obj;
    }
    else {
        objectDict.Add(obj.UniqueKey, …
Run Code Online (Sandbox Code Playgroud)

c# linq

16
推荐指数
1
解决办法
6449
查看次数

在两种类型的列表上使用 foreach 循环?

我知道我可以使用foreach循环,如下所示:

List<int> handles = GetHandles();

foreach (int handle in handles)
{
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

SortedList我可以对 a执行以下操作吗?

SortedList<string, int> namesAndHandles;
Run Code Online (Sandbox Code Playgroud)

编辑:抱歉,打错字了。它应该是一个SortedList. 本质上我想将其转换为 anIDictionary并根据名称访问句柄

c# foreach list

1
推荐指数
1
解决办法
744
查看次数

标签 统计

c# ×4

linq ×3

distinct ×2

.net-3.5 ×1

anonymous-types ×1

equality ×1

foreach ×1

list ×1