相关疑难解决方法(0)

使用linq删除列表中的重复项

我上课Itemsproperties (Id, Name, Code, Price).

列表中Items填充了重复的项目.

例如:

1         Item1       IT00001        $100
2         Item2       IT00002        $200
3         Item3       IT00003        $150
1         Item1       IT00001        $100
3         Item3       IT00003        $150
Run Code Online (Sandbox Code Playgroud)

如何使用linq删除列表中的重复项?

c# linq linq-to-objects generic-list

282
推荐指数
8
解决办法
26万
查看次数

C#:List <T>和Collection <T>之间的区别(CA1002,不公开通用列表)

试图在这里运行一个项目的运行代码分析,并得到一些警告说,像这样:

CA1002:Microsoft.Design:在' SomeClass.SomeProtectedOrPublicProperty '中更改'List < SomeType > '以使用Collection,ReadOnlyCollection或KeyedCollection

我为什么要用Collection<T>而不是List<T>?当我查看msdn文档时,它们看起来几乎相同.在阅读了警告的错误帮助后,我发现了

System.Collections.Generic.List(T)_是一个通用集合,专为性能而非继承而设计,因此不包含任何虚拟成员.

但这究竟意味着什么呢?我应该做什么呢?

我应该继续在List<T>内部使用,然后在属性中返回一个new Collection<T>(someList)而不是?或者我应该开始使用Collection<T>而不是List<T>

c# collections encapsulation

95
推荐指数
2
解决办法
7万
查看次数

使用LINQ查找多个属性的重复项

给定具有以下定义的类:

public class MyTestClass
{
    public int ValueA { get; set; }
    public int ValueB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何在MyTestClass []数组中找到重复值?

例如,

MyTestClass[] items = new MyTestClass[3];
items[0] = new MyTestClass { ValueA = 1, ValueB = 1 };
items[1] = new MyTestClass { ValueA = 0, ValueB = 1 };
items[2] = new MyTestClass { ValueA = 1, ValueB = 1 };
Run Code Online (Sandbox Code Playgroud)

包含副本,因为有两个MyTestClass对象,其中ValueA ValueB都= 1

.net c# linq duplicate-removal

20
推荐指数
2
解决办法
2万
查看次数

避免使用一个字典的更好代码 - 案例敏感性问题

我有以下方法用数据读取器中的值填充字典.数据读取器字段与传递给方法的属性之间可能存在不匹配的情况.在下面的方法中,我首先将属性转换为小写以解决此问题.这会导致两个词典.有没有更好的方法来实现这一个字典?

private Dictionary<string, object> FillDictionaryWithReaderValues(List<string> propertiesOfAllEntities, IDataReader reader)
{
   Dictionary<string, object> lowerCaseDictionary = new Dictionary<string, object>();
   Dictionary<string, object> propertyResultList = new Dictionary<string, object>();

   foreach (var item in propertiesOfAllEntities)
   {
      lowerCaseDictionary.Add(item.ToLower(), null);
   }

   for (int i = 0; i < reader.FieldCount; i++)
   {
      lowerCaseDictionary[reader.GetName(i).ToLower()] = reader[i];
   }

   foreach (var item in propertiesOfAllEntities)
   {
      propertyResultList.Add(item, lowerCaseDictionary[item.ToLower()]);
   }

   return propertyResultList;
}
Run Code Online (Sandbox Code Playgroud)

.net c# linq

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