2013-03-01 3 views
0

Я хотел бы перевести заявление Linq с помощью выберите * из dbo.vwListDetails где ProductID = «20D9F725-6667-4F3A-893A-7D30FED550BE»LINQ оператор возврата дублировать запись

меня написать заявление Linq однако он возвращать неверные данные

с помощью SQL Постулаты над ним вернуться:

productid       productname custmerid customername 
20D9F725-6667-4F3A-893A-7D30FED550BE   nike   1  andy 
20D9F725-6667-4F3A-893A-7D30FED550BE   nike   2  randy 

public IEnumerable<vwListDetails > GetAllListDetailConsumer(Guid productid) 
{ 
    ObjectQuery<vwListDetails> cust = db.vwListDetails ; 
    IEnumerable<vwListDetails> query = from d in cust 
             where d.productid == productid 
             select d; 
    return query; 

} 

если я использовать LINQ в C# код выше его возврата

productid         productname custmerid customer name 
    20D9F725-6667-4F3A-893A-7D30FED550BE   nike   1  andy 
    20D9F725-6667-4F3A-893A-7D30FED550BE   nike   1  andy 
+0

Это действительно не так. Я подозреваю, что у вас есть ошибка где-то еще. (В стороне, я бы написал весь ваш кусок метода как «return db.vwListDetails.Where (d => d.productid == new Guid (productid));' - или, возможно, построить 'Guid' в одном утверждении и затем используйте его в аналогичном. –

+3

Почему вы используете это условие: 'd.productid == new Guid (productid)'? Это действительно странно. – MarcinJuraszek

+2

Ваш вопрос в настоящее время вводит в заблуждение, так как ваш пример использует '20' в качестве продукта ID, в то время как ваш код C# использует GUID. Что это такое? –

ответ

-1

Я подозреваю, что ваше состояние неверно. ваш producid никогда не будет соответствовать GUID.

  1. Вы делаете неправильно с предикатом. where d.productid == new Guid(productid).
  2. Как вы сказали в примере Sql. вы упоминаете productid. но используя LINQ вы используете GUID. поэтому исправьте предикат.

    var urList= db.vwListDetails.Select(e=>e.productid==yourCondition);

+0

Данные уже различны. LINQ просто не будет вести себя так, как описано с запрошенными запросами - проблема лежит в другом месте. –

+0

@JonSkeet я упомянул об этом также. ПРЕД Это неверно. –

+0

Но 'Distinct()' является полной красношейникой, и мы действительно не знаем *, что предикат ошибочен. Плохо с примером «20» в SQL-запросе, но вполне возможно, что GUID считывается как строка из текстового файла и что свойство productid действительно является GUID. –

0

Ваше where условие неверно. Я думаю, что вам это нужно:

public IEnumerable<vwListDetails > GetAllListDetailConsumer(string productid) 
{ 
    ObjectQuery<vwListDetails> cust = db.vwListDetails ; 
    IEnumerable<vwListDetails> query = from d in cust 
             where d.productid == productid 
             select d; 
    return query; 
} 
+0

Если он вообще возвращает результаты, я не думаю, что это неправильно. Я подозреваю, что оригинальный пример просто вводит в заблуждение. –

+0

Повторяющийся дубликат – Supermode

Смежные вопросы