我怎样才能只获得符合一个条件的条目?

How can I get just the entries that match one condition?

我想检查我的 table 中是否有符合我条件的条目,我的意思是,我有这个:

   [Required, MinLength(10), MaxLength(100)]
    public string Title { get; set; }
    [Required, MinLength(10), MaxLength(240)]
    public string Description { get; set; }
    [Required]
    public Metric Metric { get; set; }
    [Required]
    public float InitialValue { get; set; }
    [Required]
    public float TargetValue { get; set; }

    public bool KeyTaskCheck { get; set; }

我想获取 KeyTaskCheck = true 的所有条目,我该如何使用 Asp.net Boilerplate

我想您创建了一个存储库来访问您的数据。否则,你可以看看这个文档页面 Asp.net boilerplate repositories

之后,您可以使用依赖注入来注入您的存储库 Dependency Injection

完成所有这些后,您只需从存储库中查询即可:

var myItems = _yourRepository.GetAll().Where(x => x.KeyTaskCheck == true).ToList();

您如何从 C# 访问您的 table?通过存储库或 DBContext 或通过其他方式?

如果它来自存储库,那么 Iwb 的答案是好的。 如果它是通过 DBContext 那么它会像下面这样:

  yourDBContext.YourTable.Where(x => x.KeyTaskCheck == true).ToList();

我不知道 Asp.net 样板文件。幸运的是你做到了,而且你知道如何从中提取数据:

IEnumerable<TableRow> myTableRows = ...

(或 IQueryable 或 List 等)

TableRow 是一个 class,具有您在问题中所写的属性。它代表获取的项目序列中的一项。 TableRow 的属性之一是 Boolean 属性 KeyTaskCheck

From my sequence of TableRow objects in myTableRows, give me only those that have a true value for property KeyTaskCheck.

每当你有一个类似 objects 的 IEnumerable / IQueryable 序列,并且你只想保留那些匹配某些谓词的 object 时,你应该使用 Enumerable.Where

使用复数名词作为序列的标识符,使用单数名词作为序列中一个元素的标识符是很有帮助的。

var result = myTableRows.Where(tableRow => tableRow.KeyTaskCheck);

换句话说:从 myTableRows 中的 TableRow object 序列中,仅保留那些对 属性 KeyTaskCheck 具有真实值的 TableRow object。

LINQ语句中的x => F(x)部分,意思是:从object序列中的每个object xxx,调用F(x)。

在 Where 的情况下,当且仅当 F(x) returns 为真值时,object 将保留在结果序列中。

因此,如果您希望所有 TableRow 的标题以 "A" 开头,并且 InitialValue 小于 1.0,您的查询将是:

var result = myTableRows
    .Where(tableRow => tableRow.Title.StartsWith("A") && tableRow.InitialValue < 1.0);

This article really helped me to understand LINQ