Вопрос по linq, asp.net, .net – Дублирование строк при привязке данных с помощью LINQ к объектам

12

У меня есть проблемы с привязкой Telerik RadGrid и простого ванильного ASP.NET GridView к результатам следующего запроса LINQ to entity. В обоих случаях сетки содержат правильное количество строк, но данные только из первой группы строк дублируются во всех других строках. Я непосредственно назначаю возвращаемое значение из этого кода свойству DataSource в сетках.

public IEnumerable<DirectoryPersonEntry> FindPersons(string searchTerm)
{
    DirectoryEntities dents = new DirectoryEntities();
    return from dp in dents.DirectoryPersonEntrySet
           where dp.LastName.StartsWith(searchTerm) || dp.Extension.StartsWith(searchTerm)
           orderby dp.LastName, dp.Extension
           select dp;
}

ADDED: Это альтернативный простой код ADO.NET, который работает:

    DataTable ret = new DataTable();
    using (SqlConnection sqn = new SqlConnection(ConfigurationManager.ConnectionStrings["WaveAdo"].ConnectionString))
    {
        SqlDataAdapter adap = new SqlDataAdapter("select * from DirectoryPersonList where LastName like '" + searchTerm + "%' order by LastName ", sqn);
        sqn.Open();
        adap.Fill(ret);
    }
    return ret;

MORE:

The query sent to SQL Server by LINQ works. Iterating the LINQ query results before returning them results in the same duplications. Iterating the LINQ results in the calling method, before binding, results in the same duplications.

UPDATE: Based on the very logical and fitting advice from Marc GravelError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded Phil.Wheeler
Error: User Rate Limit Exceeded ProfK
Error: User Rate Limit Exceeded Marc Gravell♦
Error: User Rate Limit Exceeded Alexander Prokofyev
Error: User Rate Limit Exceeded Alexander Prokofyev

Ваш Ответ

4   ответа
0

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

select new <ObjectName>
{
a = v.a
b = v.b
}.

Error: User Rate Limit Exceeded

1

Error: User Rate Limit Exceeded

public IEnumerable<DirectoryPersonEntry> FindPersons(string searchTerm)
{
    DirectoryEntities dents = new DirectoryEntities();
    return (from dp in dents.DirectoryPersonEntrySet
           where dp.LastName.StartsWith(searchTerm) || dp.Extension.StartsWith(searchTerm)
           orderby dp.LastName, dp.Extension
           select dp).Distinct();
}
Error: User Rate Limit Exceeded ProfK
0

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

30

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

id     | name       | ...
-------+------------+------
1      | Fred       | ...
2      | Barney     | ...
1      | Wilma      | ...
1      | Betty      | ...

Error: User Rate Limit Exceededif it thinks id is a primary keyError: User Rate Limit ExceededforcedError: User Rate Limit ExceededidError: User Rate Limit ExceededidError: User Rate Limit Exceededdoesn'tError: User Rate Limit ExceededidError: User Rate Limit Exceeded

Error: User Rate Limit ExceededidError: User Rate Limit Exceeded


Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded ProfK
Error: User Rate Limit Exceeded
@Marc, отличный материал, вы определили проблему наиболее точно. Однако вы предлагаете просто удалить флаг ключа сущности из проблемного столбца, но мне не разрешено это делать. ProfK

Похожие вопросы