断言列表中字段的唯一性

2024-02-29

我用 C# 制作了一个列表,我想进行测试以查看 Id 字段的所有值是否都是唯一的。

public static List<RestaurantReview> _reviews = new List<RestaurantReview>
{
    new RestaurantReview
    {
        Id = 1,
        Name = "McDonalds",
    },
    new RestaurantReview
    {
        Id = 2,
        Name = "Burger King",
    },
}

因为我做了一些调试,我发现它正在列表中运行,但我没有得到正确的测试值。有人可以解释一下我在这里做错了什么吗?

[TestMethod()]
public void CheckReviewIds()
{
    var FirstReview = ReviewsController._reviews.First();
    bool AllUniqueIds = ReviewsController._reviews.All(s => s.Id == FirstReview.Id);

    Assert.IsFalse(AllUniqueIds);

}

提前致谢。


另一种在时间方面具有更好性能的解决方案(特别是如果您拥有的数据集很大)是使用HashSet https://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx像这样:

bool IsAllUnique<T>(IEnumerable<T> values)
{
    HashSet<T> hash_set = new HashSet<T>();

    return values.All(x => hash_set.Add(x));
}

然后你可以像这样使用它:

bool unique = IsAllUnique(ReviewsController._reviews.Select(x => x.Id));

该解决方案取决于以下事实:HashSet.Add如果我们尝试添加的值已经存在,将返回 false。

该解决方案具有更好性能的原因之一是,如果检测到重复项目,它不必遍历列表中的其余项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

断言列表中字段的唯一性 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 禁用表单提交按钮

    我有一个按钮 我想在提交表单时禁用该按钮 以防止用户多次提交 我曾尝试天真地使用 javascript onclick 禁用该按钮 但如果客户端验证失败 该按钮仍保持禁用状态 如何在表单成功提交时而不只是在用户单击时禁用该按钮 这是一个 A
  • 哪种方式更好地创建 vue 组件(导出默认值、defineComponent 和新 Vue)

    最近学习 Vue js 后 我对如何编写 vue 组件语法感到非常困惑 我一直在看 YouTube 教程和文章 每个人都使用不同的方法 就 vue 3 而言 我们应该使用 导出默认值以创建组件 或导出默认的defineComponent 或
  • 远程连接到 SQL Server Express 实例

    尝试连接到远程 SQL Express 实例时 我收到以下错误 A network related or instance specific error occurred while establishing a connection to
  • 如何让网页自动改变宽度?

    在HTML中 有没有办法让网页扩展到用户的显示器 比如我有一个15英寸的 但别人有一个24英寸的 该网页在他们的屏幕上很小 但适合最小尺寸 如何使页面扩展至 100 或者 95 流体宽度是通过使用百分比单位或 em 单位来实现的 这一切都是
  • iOS 语音到数字格式的文本转换

    目前我正在使用默认的 iOS 语音到文本转换 而无需为其添加任何代码 当用户说 五 时 它会显示为 五 或 5 但是 我需要将它始终转换为 5 我可以使用 SFSpeechRecognizer 或任何其他方式来实现此目的吗 这可以帮助您入门
  • 将 const std::string & 作为参数传递的日子结束了吗?

    我最近听到赫伯 萨特 Herb Sutter 的一次演讲 他提出通过的理由std vector and std string by const 大部分已经消失了 他建议现在最好编写如下所示的函数 std string do somethin
  • Excel自动计算设置

    我在 Microsoft Office Excel 2007 中有一个复杂的项目 它使用了大量的 UDF 通过 VBA 在工作簿 打开事件 我将 Excel 自动计算设置为关闭 并策略性地放置计算每当我需要时手动计算单元格的方法 以便 UD
  • ggplot to png - 自动拉伸图像

    我正在生成一个ggplot plot并将其另存为 png图像 虽然 Rstudio 中生成的绘图根据 y 轴的值进行拉伸 但当我将其另存为时 我会得到一个正方形的图像 png 如何自动获得最佳拉伸图像 png form Function t
  • 微调器的“大”滚动条

    我有一个包含大量项目的旋转器 因此简单的滚动对于用户来说非常慢 我想在 ScrollView 中使用 大 可触摸滚动条或类似的滚动条 我该怎么做 我有一个装有大量物品的旋转器 这是你问题的一部分 将 Spinner 视为类似于桌面或 Web
  • 在 C# 中接受转义序列的 Label 属性 [重复]

    这个问题在这里已经有答案了 可能的重复 C 中标签是否有显示 的属性 我正在尝试在标签中显示客户姓名 当名称中存在任何 符号时 它会显示为 例如 A B XXX显示为AB with B下划线 除了硬编码之外 有什么办法可以显示 通过设置任何
  • 基于 n 元字符的相似性度量

    我使用以下代码从单词中提取了二元语法 Scanner a new Scanner file1 PrintWriter pw1 new PrintWriter file2 while a hasNext String gram a next
  • 在 CSS 中,当列表中有列表时,我无法覆盖父列表样式

    如果我有一个 列表 其中包含规则 list style type none 以及 项目的规则 background image url whatever jpg 我似乎看不到如果我有一个 列表作为其中一个 项目的子项 则覆盖这些规则 我想让
  • 如何使用 EXISTS 子句的正确方法

    在我的 SP 中 我正在创建一个临时表 PolicyNumbers并填充它Policy Numbers基于将提供给 SP 的参数 CREATE TABLE PolicyNumbers PolicyNumber varchar 50 INSE
  • Typescript,在 monorepo 项目中丢失 Zod 和 tRPC 类型,类型会导致任何

    我的处境有点奇怪 在过去的两周里 我一直在尝试调试为什么我在 monorepo 内的项目之间丢失类型 我的后端公开了我的客户端使用的类型 但由于某种原因 某些类型无法理解并成为any 这使得我有一段时间无法在这个项目上开发任何东西 我根据该
  • 如何确定c#中的dns变化?

    我想监控dns地址的变化 所以我需要跟踪 dns 更改 我现在正在用线程来做 我获取 dns 并将其保存为文件 然后每 10 秒比较一次它们 但我需要更具体的解决方案 例如 有相关活动吗 这是代码 GetDns public List
  • ReDim 下标超出范围 (VBA)

    您能否向我解释一下为什么这个简单的 VBA 代码在最后一行失败 下标超出范围 Dim test As Variant ReDim test 0 1 test 0 0 key test 0 1 1 ReDim Preserve test 1
  • Java 8 LocalDateTime 到日期丢失时区

    我有这个代码 我的系统的默认时区是 PDT 时区转换后 finalDate 显示 PDT 时间 如何让它显示 亚洲 新加坡 的最终日期 String strDate 201507081245 DateTimeFormatter mx3Dat
  • SSRS - 详细信息行中的垂直合并单元格

    我有一个存储过程 它返回一些数据 如下所示 Trade mode Area Production place Commodity Reseller Min sell price Max buy price Trans count Volum
  • Java JFrame 调整大小

    我知道我可以使用componentResized监听用户何时调整窗口大小 这不是一个很好的解决方案 如果我这样做并添加一个resize 子组件的方法 然后它会等到用户完成调整大小后再调用resize 方法 有没有办法在调整大小时调整子元素的
  • 断言列表中字段的唯一性

    我用 C 制作了一个列表 我想进行测试以查看 Id 字段的所有值是否都是唯一的 public static List