linq 实体框架选择唯一名称

kse8i1jr  于 2023-03-21  发布在  其他
关注(0)|答案(9)|浏览(163)

如何使用Entity Framework执行此SQL查询?

SELECT DISTINCT NAME FROM TestAddresses
i34xakig

i34xakig1#

正在使用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();
u3r8eeie

u3r8eeie2#

试试这个:

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

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

l7wslrjt

l7wslrjt3#

  • *@alliswell**展示的方式是完全有效的,而且还有另一种方式!:)
var result = EFContext.TestAddresses
    .GroupBy(ta => ta.Name)
    .Select(ta => ta.Key);

我希望能对某人有用。

nmpmafwu

nmpmafwu4#

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

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

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

在本例中,没有重复的CategoryId和CategoryName,希望这对您有所帮助

mbjcgjjk

mbjcgjjk5#

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

假设您正在***使用视图,其中您正在使用多个表***,并且您希望在这种情况下应用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
rqenqsqc

rqenqsqc6#

使用Select().Distinct()函数
例如

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

e5nszbig7#

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

dhxwm5r48#

实体-框架选择不同名称:
假设你要每组特定列的每一个第一数据;

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

            }
w51jfk4q

w51jfk4q9#

.Distinct()对table使用默认的相等比较器,这可能不是我们想要的,这可能给予我们不正确的答案,所以我们可以使用DistinctBy,它使用一个特定的键。
DBContext.TestAddresses.Select(m => new {m.NAME, m.ID}).DistinctBy(m=>m.NAME);
如果需要多列,只需使用.DistinctBy(m=〉new{m.NAME,m.ID})

相关问题