开发者

error: The query results cannot be enumerated more than once

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})开发者_JAVA技巧;\"   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;

say error:The query results cannot be enumerated more than once

how check var is empty or null with out enumerated;


Why bother with the if at all?

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

You can always check the newesList.Count property afterward.


Not sure what's available as a member in newes, but if it's an object and depending on what dc.GetNewsCompany returns you could check for null

if (news == null) return;

or if it returns an empty collection/array, just check the count/length:

if (news.Count == 0) return;
if (news.Length == 0) return;


the error comes, because you are using .GetEnumerator() on newes and then using the newes again in a foreach Loop .. this causes the "double enumeration".

Generally avoid walking "such var"'s with a foreach, since the DataReader is locked the whole loop !. Means that you cannot use the same entitie in this loop.

Better .ToList() , you can the list.AsQuearable agian if you want to Linq on it

f.e. something like

var newes = dc.CompanyTable.Where(ln => ln.id.Equals(_idCompany));;
List<CompanyTable> newesList = newes.ToList();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜