我有一个可观察的投标集合,类结构如下。将项目与列表中的其他项目进行比较
public class Bids
{
public DateTime StartDateTimeLocal { get; set; }
public DateTime EndDateTimeLocal { get; set; }
public decimal Bid5 { get; set; }
public decimal Price5 { get; set; }
public decimal Bid4 { get; set; }
public decimal Price4 { get; set; }
public decimal Bid3 { get; set; }
public decimal Price3 { get; set; }
public decimal Bid2 { get; set; }
public decimal Price2 { get; set; }
public decimal Bid1 { get; set; }
public decimal Price1 { get; set; }
}
我有一个观察的集合
public ObservableCollection<Bid> Bids {get; set;}
投标收集类似于下,
StartDateTimeLocal EndDateTimeLocal Bid5 Price5 Bid4 Price4 Bid3 Price3 Bid2 Price2 Bid1 Price1 2014-02-14 23:00 2014-02-14 23:30 0 0 0 0 0 0 50 10 100 100 2014-02-14 23:30 2014-02-15 00:00 0 0 0 0 0 0 10 300 200 10 2014-02-15 00:00 2014-02-15 00:30 0 0 0 0 0 0 100 30 0 10 2014-02-15 03:00 2014-02-15 01:00 0 0 0 0 0 0 30 100 0 0
我需要验证观察集合中的数据是按照规则有效.. 。
- 投标2应该只有一个价值如果出价1有价值。因此,除非出价1,否则出价2中的非零值无效。同样,bid1,bid2,bid3中的值也没有问题,但如果bid4没有值,则bid5中的值无效。
- 投标价格必须保持不变或增加。因此,投标2价格应该等于或大于投标1价格。
在上面的示例, - 第三届&第四行是不正确的,因为标段不具有价值,但 标段一样。
- 第二行是正确的,因为Bid1有一个值,因此Bid2 的值很好,Bid2> Bid1的价格。虽然第1行是
不正确,因为出价2的价格是<出价的价格1
有人可以建议一种方法来执行此验证。
LINQ代表语言集成查询。它无法为您执行任何验证。如果你提供更多的细节,可以选择。你是否尝试在创建对象时进行验证,你是否想要在UI中进行验证,在插入数据库行时是否尝试验证等? –
对象出价绑定到一个数据网格,我在按钮单击执行这些验证。该对象已存在并且值位于该对象中。如果验证失败,我会报告给用户,如果没有,则将其保存到数据库。 –
您是否在尝试使用LINQ之前尝试编写非LINQ验证? – MarcinJuraszek