我有一个 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; }
}
}
你可以像这样改变你的功能
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,但您可以根据您的需要订购