【发布时间】:2011-05-31 04:38:35
【问题描述】:
如何使用Entity Framework 进行SQL 查询?
SELECT DISTINCT NAME FROM TestAddresses
【问题讨论】:
标签: c# linq entity-framework distinct
如何使用Entity Framework 进行SQL 查询?
SELECT DISTINCT NAME FROM TestAddresses
【问题讨论】:
标签: c# linq entity-framework distinct
使用 lambda 表达式..
var result = EFContext.TestAddresses.Select(m => m.Name).Distinct();
使用 where 的另一种变体,
var result = EFContext.TestAddresses
.Where(a => a.age > 10)//if you have any condition
.Select(m => m.name).Distinct();
使用类似 sql 语法的另一种变体
var result = (from recordset
in EFContext.TestAddresses
.where(a => a.city = 'NY')//if you have any condition
.select new
{
recordset.name
}).Distinct();
【讨论】:
试试这个:
var results = (from ta in context.TestAddresses
select ta.Name).Distinct();
这将为您提供IEnumerable<string> - 您可以在其上调用.ToList() 以获取List<string>。
【讨论】:
@alliswell 展示的方式是完全有效的,还有另一种方式! :)
var result = EFContext.TestAddresses
.GroupBy(ta => ta.Name)
.Select(ta => ta.Key);
我希望它对某人有用。
【讨论】:
DBContext.TestAddresses.Select(m => m.NAME).Distinct();
如果您有多个列,请这样做:
DBContext.TestAddresses.Select(m => new {m.NAME, m.ID}).Distinct();
在这个例子中没有重复的 CategoryId 也没有 CategoryName 我希望这会对你有所帮助
【讨论】:
实体框架选择不同的名称:
假设如果您使用正在使用多个表的视图,并且您想在这种情况下应用 distinct,首先您必须将值存储在变量中,然后您可以对这个变量应用 Distinct ......
public List<Item_Img_Sal_VIEW> GetItemDescription(int ItemNo)
{
var Result= db.Item_Img_Sal_VIEW.Where(p => p.ItemID == ItemNo).ToList();
return Result.Distinct().ToList();
}
或者你可以试试这个简单的例子
Public Function GetUniqueLocation() As List(Of Integer)
Return db.LoginUsers.Select(Function(p) p.LocID).Distinct().ToList()
End Function
【讨论】:
使用 Select().Distinct()
例如
DBContext db = new DBContext();
var data= db.User_Food_UserIntakeFood .Select( ).Distinct();
【讨论】:
为了避免ORDER BY items must appear in the select list if SELECT DISTINCT报错,最好应该是
var results = (
from ta in DBContext.TestAddresses
select ta.Name
)
.Distinct()
.OrderBy( x => 1);
【讨论】:
Entity-Framework 选择不同的名称:
假设您想要每组特定列的每个第一个数据;
var data = objDb.TableName.GroupBy(dt => dt.ColumnName).Select(dt => new { dt.Key }).ToList();
foreach (var item in data)
{
var data2= objDb.TableName.Where(dt=>dt.ColumnName==item.Key).Select(dt=>new {dt.SelectYourColumn}).Distinct().FirstOrDefault();
//Eg.
{
ListBox1.Items.Add(data2.ColumnName);
}
}
【讨论】: