实体框架选择不同的名称

时间:2010-12-27 15:24:41

标签: c# linq entity-framework distinct

如何使用实体框架执行 SQL 查询?

SELECT DISTINCT NAME FROM TestAddresses

8 个答案:

答案 0 :(得分:214)

使用lambda表达式..

 var result = EFContext.TestAddresses.Select(m => m.Name).Distinct();

答案 1 :(得分:44)

试试这个:

var results = (from ta in context.TestAddresses
               select ta.Name).Distinct();

这会为您提供IEnumerable<string> - 您可以在其上调用.ToList()以获得List<string>

答案 2 :(得分:18)

@alliswell 显示的方式完全有效,还有另一种方法! :)

var result = EFContext.TestAddresses
    .GroupBy(ta => ta.Name)
    .Select(ta => ta.Key);

我希望它对某人有用。

答案 3 :(得分:9)

DBContext.TestAddresses.Select(m => m.NAME).Distinct();

如果您有多个列,请执行以下操作:

DBContext.TestAddresses.Select(m => new {m.NAME, m.ID}).Distinct();

在这个例子中没有重复的CategoryId和没有CategoryName我希望这会对你有所帮助

答案 4 :(得分:4)

实体框架选择不同的名称:

假设你是 使用你正在使用多个表的视图 ,并且你想在这种情况下应用distinct,首先你需要将值存储在变量&amp;然后你可以对这个变量应用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

答案 5 :(得分:3)

使用Select()。Distinct()

例如

DBContext db = new DBContext();
var data= db.User_Food_UserIntakeFood .Select( ).Distinct();

答案 6 :(得分:1)

实体框架选择不同的名称:

假设您想要每组的特定列的每个第一个数据;

 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);                    
                }

            }

答案 7 :(得分:1)

为了避免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);