此行为可能是由模型类中的错误Key属性集引起的。如果在结果查询中,具有Key字段的行重复,则 DataGrid 将只取第一个。
示例(书店信息):您的结果类(BookPriceInfo.cs)如下所示:
public class BookPriceInfo {
[DataMember]
[Key]
public int BookId { get; set; }
[DataMember]
public string Name {get; set; }
[DataMember]
public string StoreName {get; set;}
[DataMember]
public decimal Price {get; set;}
}
如果您有从数据库返回的查询结果:
BookId | Name | StoreName | Price
1 | book1 | store1 | 70.00
1 | book1 | store2 | 69.99
2 | book2 | store1 | 40.00
2 | book2 | store2 | 39.99
然后 DataGrig 将只显示这个:
BookId | Name | StoreName | Price
1 | book1 | store1 | 70.00
2 | book2 | store1 | 40.00
发生这种情况是因为 DataGrid 将通过标记为的字段“区分”结果Key
(仅从具有相同 BookId 的所有行中获取第一行),因为它应该是所有行的 uniq。
解决方案
从具有重复值(BookId)的字段中删除Key
属性,并将其设置为所有行都具有唯一值的字段(您可以添加一些列,如 BookPriceId,它将是唯一的)。
public class BookPriceInfo {
[DataMember]
public int BookId { get; set; }
[DataMember]
public string Name {get; set; }
[DataMember]
public string StoreName {get; set;}
[DataMember]
public decimal Price {get; set;}
[DataMember]
[Key]
public int BookPriceId {get; set;}
}
查询结果:
BookPriceId | BookId | Name | StoreName | Price
1 | 1 | book1 | store1 | 70.00
2 | 1 | book1 | store2 | 69.99
3 | 2 | book2 | store1 | 40.00
4 | 2 | book2 | store2 | 39.99
之后,您应该会看到查询返回的所有行。希望这可以帮助 :)