ошибка: результаты запроса не могут быть перечислены более одного раза - PullRequest
1 голос
/ 06 июля 2011
Edit:

 DataClassesDataContext dc = new DataClassesDataContext();
 string _idCompany = Request["idCompany"];
        var newes = dc.GetNewsCompany(Int64.Parse(_idCompany));            
        string date = "";
        string newsHtml = "<center>"; 
        if(newes.GetEnumerator().MoveNext()){
            foreach (var item in newes)//say Error .......................
            {
               // date = calendar.GetDayOfMonth(item.DateSend) + "/" + calendar.GetMonth(item.DateSend) + "/" + calendar.GetYear(item.DateSend).ToString();
            //    newsHtml += "<li class='news-item'><a style='text-decoration:none' class=\"link\" onclick=\"$(\'#BodyNews\').text(\'" + HttpUtility.HtmlEncode(item.Body).Trim() + "\');$(\'#BodyNews\').dialog({resizable:false});\"   href=\"#\" > " + item.Title.ToString() + "</a>&nbsp;" + date + "   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </li>";

            }

            newsHtml += "</center>";
            }
            else
            {
               // var propertyCompany = dc.GetPropertyCompanyById(Int64.Parse(_idCompany));
           //     newsHtml += "<li class='news-item'><a style='text-decoration:none' class=\"link\" );$(\'#BodyNews\').dialog({resizable:false});\"   href=\"#\" > " + "!به صفحه شخصی شرکت " + propertyCompany.FirstOrDefault().NameCompany + " خوش آمدید " + "</a>&nbsp;" + date + "   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       </li>";

            }
        return newsHtml;

допустимая ошибка: результаты запроса не могут быть перечислены более одного раза

как проверка var пуста или равна нулю без перечисления;

Ответы [ 3 ]

2 голосов
/ 06 июля 2011

Зачем вообще беспокоиться о if?

var newes = dc.GetNewsCompany(Int64.Parse(_idCompany));
//if (newes.GetEnumerator().MoveNext())//check is null or empty
var newesList = newes.ToList();
if (neweList.Count > 0) 
{
    ...
}

Вы всегда можете проверить свойство newesList.Count позже.

0 голосов
/ 08 июля 2011

возникает ошибка, потому что вы используете .GetEnumerator () для новичков, а затем снова используете новинки в цикле foreach .. это вызывает «двойное перечисление».

Как правило, избегайте обхода «таких переменных»это с foreach, так как DataReader заблокирован весь цикл!Означает, что вы не можете использовать одно и то же право в этом цикле.

Лучше .ToList(), вы можете использовать список. Как вариант, если вы хотите использовать Linq для него

, например,

var newes = dc.CompanyTable.Where(ln => ln.id.Equals(_idCompany));;
List<CompanyTable> newesList = newes.ToList();
0 голосов
/ 06 июля 2011

Не уверен, что доступно в качестве члена в newes, но если это объект и в зависимости от того, что возвращает dc.GetNewsCompany, вы можете проверить наличие нуля

if (news == null) return;

или если он возвратит пустую коллекцию / массив,просто проверьте количество / длину:

if (news.Count == 0) return;
if (news.Length == 0) return;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...