gpt4 book ai didi

c# - 如何在保存到数据库之前维护唯一列表? - C#

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:14 24 4
gpt4 key购买 nike

一个简化的场景:

  • 我有一个 List<Foo> .
  • Foo有两个属性Description (string), IsFoo (bool)

例如:

var foos = new List<Foo>();

用户可以通过文本框“添加新的 Foo”,然后在表单提交上我这样做:

foos.Add(new Foo { Description = txtOne.Text, IsFoo = true });
foos.SaveToDb();

但是,有多个文本框,例如,如果他们在文本框一中键入“FooBar”,然后在文本框二中键入“FooBar”,我不想显示错误,但我只是不想将它们添加到收藏中。 (不要担心这背后的原因,这是一个简化的场景)。

我不需要向 UI 显示任何内容,只是在他们提交表单时,在持久化到数据库之前我需要删除任何重复项(或首先阻止它们被添加到列表中)。

最简单/最好的方法是什么?也许是字典?

我正在使用 C#4、LINQ、.NET 4。

最佳答案

您可以使用 HashSet<Foo> .

HashSet 是唯一的、无序的集合。
添加一个已经存在的元素将不做任何事情。 (并返回 false )

请注意,您必须覆盖 EqualsGetHashCodeFoo 上按值比较的类。

另请注意,哈希集本质上是无序的;如果您关心广告订单,则不能使用它。


或者,您可以使用 LINQ 检查您的列表是否有重复项:

if (!foos.Any(f => f.Description == txtOne.Text))
foos.Add(new Foo { Description = txtOne.Text, IsFoo = true });

关于c# - 如何在保存到数据库之前维护唯一列表? - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4190143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com