相关疑难解决方法(0)

C#集合集?

有谁知道Set在C#中是否有与Java 集合相当的好处?我知道你可以使用a Dictionary或者HashTable通过填充而忽略值来模仿一个集合,但这不是一个非常优雅的方式.

.net c# collections set

463
推荐指数
7
解决办法
35万
查看次数

我什么时候应该使用HashSet <T>类型?

我正在探索这种HashSet<T>类型,但我不明白它在收藏中的位置.

可以用它来代替List<T>吗?我认为a的表现HashSet<T>会更好,但我看不到个人对其元素的访问.

它只用于枚举吗?

.net c# hashset data-structures

128
推荐指数
8
解决办法
9万
查看次数

检查文件扩展名是否为图像的好方法

我有这个文件类型过滤器:

    public const string Png = "PNG Portable Network Graphics (*.png)|" + "*.png";
    public const string Jpg = "JPEG File Interchange Format (*.jpg *.jpeg *jfif)|" + "*.jpg;*.jpeg;*.jfif";
    public const string Bmp = "BMP Windows Bitmap (*.bmp)|" + "*.bmp";
    public const string Tif = "TIF Tagged Imaged File Format (*.tif *.tiff)|" + "*.tif;*.tiff";
    public const string Gif = "GIF Graphics Interchange Format (*.gif)|" + "*.gif";
    public const string AllImages = "Image file|" + "*.png; *.jpg; *.jpeg; *.jfif; *.bmp;*.tif; *.tiff; *.gif";
    public …
Run Code Online (Sandbox Code Playgroud)

c# file-extension openfiledialog filefilter

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

HashSet <T>(IEqualityComparer <T>)的查找时间复杂度是多少?

在C#.NET中,我喜欢使用HashSets,因为它们的查找时间复杂度为O(1).如果我要查询大量数据,我通常更喜欢将HashSet用于List,因为它具有这种时间复杂性.

令我困惑的是HashSet的构造函数,它将IEqualityComparer作为参数:

http://msdn.microsoft.com/en-us/library/bb359100.aspx

在上面的链接中,备注注意到"构造函数是一个O(1)操作",但如果是这种情况,我很好奇,如果查找仍然是O(1).

特别是,在我看来,如果我要编写一个Comparer来传递给HashSet的构造函数,每当我执行查找时,必须在每个键上执行Comparer代码以检查是否存在一场比赛.这不是O(1),而是O(n).

当元素添加到集合中时,实现是否在内部构建查找表?

一般来说,我如何确定有关.NET数据结构复杂性的信息?

c# complexity-theory runtime hashset

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

ASP.NET实体框架6集合的HashSet或List?

我的EF模型看起来像这样:

public class ContentStatus
{
    public ContentStatus()
    {
        this.Contents = new List<Content>();
    }

    public int ContentStatusId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Content> Contents { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是我也看到了如下所示的implementatins:

public class ContentStatus
{
    public ContentStatus()
    {
        this.Contents = new HashSet<Content>();
    }

    public int ContentStatusId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Content> Contents { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是此Object的DDL:

CREATE TABLE [dbo].[ContentStatus] (
    [ContentStatusId] INT           NOT …
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net entity-framework entity-framework-6

11
推荐指数
2
解决办法
7376
查看次数

HashSet 或 Distinct 以读取对象列表 &lt;&gt; 中不同的属性值

这在某种程度上与此(获取 C# 列表中的所有唯一项)问题有关。

上面的问题是在谈论一个简单的值数组。我有一个从第三方 Web 服务返回的对象:

public class X
{
    public Enum y {get; set;}

}
Run Code Online (Sandbox Code Playgroud)

我有这些对象的列表,List<x> data;总共大约 100 条记录但可变。现在我想要属性列表中的所有可能值,y我想绑定它做一个CheckBoxList.DataSource(以防万一)。

如何最有效的方法来做到这一点?

我可以想到两种算法:

var data = HashSet<Enum> hashSet = new HashSet<Enum>(xs.Select(s => s.y));
chkBoxList.DataSource = data;
Run Code Online (Sandbox Code Playgroud)

或者

var data = xs.Select(s => s.y).Distinct();
chkBoxList.DataSource = data;
Run Code Online (Sandbox Code Playgroud)

我的直觉是 HashSet 但我不是 100% 确定。

如果有人有任何想法,可以接受更好的想法吗?

c# linq performance hashset c#-4.0

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

如何检查C#中列表中是否已存在某个项目

我想仅在列表中尚未添加classStudents到列表中._ClassStudentsclassStudents

public class ClassStudents{

   public Id {get; set;}
   public Name {get; set;}
   public List<Student> Student {get; set;}

}



public static List<ClassStudents> _ClassStudentsList = new List<ClassStudents>();

  public static void addClassStudents(ClassStudents classStudents)
  {
          //if( classStudents isn't in ClassStudentsList ) <------
           _ClassStudentsList.Add(classStudents);
   }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c#

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