码:
public static IQueryable GetAllBy_HesapAdiFirmaAdiCariNo_Turu_bypage_short(string filter, string tip, int page_size, int page_index, string sortcolumn, bool sortdirection)
{
//bool tip: 0-tümü, 1-son kullanici, 2-bayi, 3- tedarikçi
VeriyazDBDataContext db = new VeriyazDBDataContext(); db.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
var cariKayitlari = DAL.DAOCari.SelectAll();
var kayitlar = (from rows in cariKayitlari
where rows.HESAPADI.ToLower().Contains(filter.ToLower()) ||
(rows.CARITURU == "Bireysel" ? rows.B_ADSOYAD.ToLower().Contains(filter.ToLower()) :
rows.K_FIRMAADI.ToLower().Contains(filter.ToLower())) ||
(rows.CARITURU == "Bireysel" ?
rows.B_ADSOYAD.ToLower().Contains(filter.ToUpper()) :
rows.K_FIRMAADI.ToLower().Contains(filter.ToUpper())) ||
rows.ID.ToString().Contains(filter)
select rows);
switch (tip)
{
case ("Tümü"):
default:
{
break;
}
case ("Son Kullanici"):
{
kayitlar = kayitlar.Where(rows => rows.SONKULLANICI == true);
break;
}
case ("Bayi"):
{
kayitlar = kayitlar.Where(rows => rows.BAYI == true);
break;
}
case ("Tedarikçi"):
{
kayitlar = kayitlar.Where(rows => rows.TEDARIKCI == true);
break;
}
}
var kayitlar2 = from rows in kayitlar
select new
{
HESAPNO = rows.ID,
HESAPADI = rows.HESAPADI,
CARIADI = (rows.CARITURU == "Bireysel" ? rows.B_ADSOYAD : rows.K_FIRMAADI)
//BAKIYE= "",
//PARABIRIMI = rows.LISTEPARABIRIMI
};
if (sortcolumn != "")
{
if (sortdirection)
kayitlar2 = kayitlar2.Order(sortcolumn, SortDirection.Ascending).AsQueryable();
else
kayitlar2 = kayitlar2.Order(sortcolumn, SortDirection.Descending).AsQueryable();
}
return kayitlar2.Skip(page_size * (page_index)).Take(page_size);
}
Run Code Online (Sandbox Code Playgroud)
我System.Web.UI.Page在下面的方法中从两个不同的类调用此方法
private void cari_paging_button_yenile()
{
Button_CariIleri.Enabled = true;
Button_CariGeri.Enabled = true;
if (CariPageIndex == 0)
Button_CariGeri.Enabled = false;
string tumu = "Tümü";
if (DAL.DAOCari.GetAllBy_HesapAdiFirmaAdiCariNo_Turu_bypage_short(TextBox_CariArama.Text, tumu, CariPageSize, CariPageIndex + 1, CariSortColumn, CariSortDirection).Count() == 0)//problem occured in this row
Button_CariIleri.Enabled = false;
}
Run Code Online (Sandbox Code Playgroud)
问题:当我GetAllBy_HesapAdiFirmaAdiCariNo_Turu_bypage_short在CariHesaplar中调用时,我可以在if语句中获取计数.cari_paging_button_yenile()但是,在YeniBilet中,当我尝试获取Count()时,我得到了
错误19'System.Linq.IQueryable'不包含'Count'的定义,并且没有扩展方法'Count'接受类型'System.Linq.IQueryable'的第一个参数可以找到(你是否缺少using指令或者程序集引用?)C:\ Users\yigit\Desktop\PROTicari(11.04.2011)\ UI\MusteriDestek\YeniBilet.aspx.cs 257 17 UI
我尝试了很多东西来解决这个问题,但没有任何效果.之后,我认为它可能是页面using开头的一个缺失的声明.我检查了两个类 using只有不同using System.Linq.Dynamic;但是它们都有,using System.Linq;所以我认为它不可能问题.然后我写using System.Linq.Dynamic;了YeniBilet,它也给出了错误,错误消失了.
我的问题是为什么using System.Linq.Dynamic;当一个页面已经using System.Linq;不是Linq.Dynamic一个子集时没有添加引用Linq?为什么我必须再次添加它的引用?
Count()不存在IQueryable,但确实存在IQueryable<TSource>.除了在System.Linq.Dynamic中,但System.Linq.Dynamic不是基类库的一部分,您将始终必须添加对它的引用(如果您将其编译为DLL)或使用命名空间(如果包括在内)您项目中的Dynamic.cs).它不是BCL中Linq的子集.为了强化每个人所说的内容,使用命名空间仅使用该命名空间(其顶级).它是C#语言的设计,由编译器强制执行.