C# WPF 实体框架 SQLite:从表中选择不同的值

问题描述 投票:0回答:1

我有一个 SQLite 数据库,其中的表包含列

ID, Item, Price
、(等)

public static List<BudgetModel> GetBudgets()
{
    using (var db = new DataContext())
    {
        return db.Budget.OrderBy(b => b.BudgetID).ToList();
    }
}

此代码返回一个包含表中所有内容的列表。

我只希望 item 的值和它们是不同的。

但是如果我这样做(或者我在 Stack 或 WWW 上发现的任何其他变体)

public static List<BudgetModel> GetBudgetsDistinct()
{
    using (var db = new DataContext())
    {
        var result = db.Budget
                       .Select(o => o.Item)
                       .Distinct().ToList();
        return result;
    }
}

我收到转换错误:

类型“System.Collections.Generic.List”无法转换为隐式“System.Collections.Generic.List” (翻译自德语

对于我(初学者)来说,它看起来无法从列表转换到列表......

当然差异是

BudgIT.Models.BudgetModel
- 但如何解决它?

我错过了什么?

提前致谢

附加信息:这就是我从视图模型中调用此代码的方式:

ItemList = new BindableCollection<BudgetModel>(BudgetData.GetBudgetsDistinct());

编辑:

using System.ComponentModel.DataAnnotations;

namespace BudgIT.Models
{
    public class BudgetModel
    {
        [Key] public int BudgetID { get; set; }
        public int MarketID { get; set; }
        public string Item { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
        public bool Offer { get; set; }
        public bool Luxury { get; set; }
        public int Number { get; set; }
        public int Receipt { get; set; }

    }
}

c# sqlite entity-framework
1个回答
0
投票

你可以像这样改变你的功能

public static List<BudgetModel> GetBudgetsDistinct()
{
    using (var db = new DataContext())
    {
        var result = db.Budget
                   .DistinctBy(x => x.Item).ToList();
        return result;
    }
}
  • 这将根据您的订单选择第一个对象到结果

预算ID 市场ID 项目
预算1 Mk1 项目1
预算2 Mk1 项目2
预算3 Mk2 项目2

你可以通过物品来区分

您只会得到Budget1、Budget2,但您可以根据您的需要订购

© www.soinside.com 2019 - 2024. All rights reserved.