5

この質問にはすでに答えがあります。

これは私のコードです

 searchDataContext db = new searchDataContext();

    var query = (from p in db.SearchFirst(city, area)
                select new
                {
                    ID = p.Id,
                    Address = p.address,
                    Level = p.agahilevel

                });
    int count =query.Count();

    // records
    var q = query.Skip(Convert.ToInt32(start)).Take(Convert.ToInt32(width));

    if (q.Count() > 0)
    {
        int index = 0;
        str += "[";
        foreach (var row in q)
        {
            if (index == 0)

このコードに誤りがあります

The query results cannot be enumerated more than once.

それをチェックして答えてください。


3 답변


8

クエリを具体化します。

var addresses = (from p in db.SearchFirst(city, area)
                select new
                {
                    ID = p.Id,
                    Address = p.address,
                    Level = p.agahilevel

                })
                .Skip(Convert.ToInt32(start))
                .Take(Convert.ToInt32(width))
                .ToList();

それからEnumerable.Any要素が含まれているかどうかを確認するには:

if(addresses.Any())
{
    int index = 0; // ...
}


10

キャッシュされたクエリを使用してそれらを複数回繰り返すことはできません。

作るList<T>それを試してみてください

var q = query.ToList(); // work on this


5

追加した場合.ToList()あなたの質問にあなたの問題は解決されます

リンクされた質問


関連する質問

最近の質問