C#for IQueryable中的参考问题
代码: 我在下面的方法中从两个不同的C#for IQueryable中的参考问题,c#,linq,reference,C#,Linq,Reference,代码: 我在下面的方法中从两个不同的System.Web.UI.Page类调用此方法 卡里赫萨帕尔 耶尼比莱特 问题:当我在CariHesaplar中调用GetAllBy\u hesapadirmadicarino\u Turu\u bypage\u short时,我可以在cari\u paging\u button\u yenile()中的if语句中获取计数。但是,在YeniBilet中,当我尝试获取计数()时,我得到了 错误19“System.Linq.IQueryable”不包含的定义
System.Web.UI.Page
类调用此方法
问题:当我在CariHesaplar中调用
GetAllBy\u hesapadirmadicarino\u Turu\u bypage\u short
时,我可以在cari\u paging\u button\u yenile()
中的if语句中获取计数。但是,在YeniBilet中,当我尝试获取计数()时,我得到了
错误19“System.Linq.IQueryable”不包含的定义
“Count”和不接受第一个参数的扩展方法“Count”
可以找到“System.Linq.IQueryable”类型(是否缺少使用
指令或程序集引用?)C:\Users\yigit\Desktop\PROTicari
(11.04.2011)\UI\MusteriDestek\YeniBilet.aspx.cs 257 17 UI
我尝试了很多方法来解决这个问题,但都没有奏效。后来,我想可能是页面开头缺少了using
语句。我检查了两个类using
s唯一不同的是using System.Linq.Dynamic但是他们都有使用System.Linq代码>所以我认为这不可能是问题所在。但后来我用System.Linq.Dynamic编写了也给出了错误,错误消失了
我的问题是为什么使用System.Linq.Dynamic当页面已经使用System.Linq时,不添加代码>引用
不是Linq。动态的就像Linq
的一个子集?为什么我必须再次添加它的引用?计数方法是一种扩展方法。扩展方法要求使用using导入定义它们的命名空间
Linq.Dynamic不是像Linq的子集吗?为什么我必须再次添加它的引用
这与问为什么我需要添加System.Foo代码>如果我已经在使用系统添加代码>。毕竟Foo
也是System
的一个子集。这是名称空间在C#中的工作方式,当您使用using指令添加父名称空间时,不会添加嵌套名称空间
您可能会争论为什么代码文件模板在默认情况下不添加System.Linq.Dynamic
。在大多数情况下,它是不必要的,因为System.Linq.Dynamic
是语言集成查询功能的专门用途,它使您能够构建动态查询
关于您得到的错误,如果您检查MSDN,IQueryable.Count
扩展方法是System.Linq
的一部分,因此我不确定添加System.Linq.Dynamic
如何解决您的问题
我的问题是为什么要使用System.Linq.Dynamic;引用不是
当页面已使用System.Linq时添加;林克不是很有活力吗
就像Linq的子集一样?为什么我必须再次添加它的引用
这是用C语言设计的,您谈论使用的方式就是java中导入的工作方式。在C#中,没有使用System.Linq.*代码>
确实没有使用IQueryable.Count
而不是IQueryable.Count()
?Count()
对于IQueryable
不存在,但是对于IQueryable
存在。除了在System.Linq.Dynamic*中之外,System.Linq.Dynamic不是基类库的一部分,您将始终必须添加对它的引用(如果您将其编译为DLL)或使用命名空间(如果您的项目中包含Dynamic.cs)。它不是BCL中Linq的一个子集。为了加强大家所说的,使用名称空间只使用该名称空间(其顶级)。这是C语言的设计,由编译器执行
*现在,JohnnyCageWins已被弃用,但它们都有using System.Linq;“using指令并没有添加任何引用。他们告诉编译器您想对某些类型使用速记。例如,使用System.Collections.Generic可以使用缩写IEnumerable,而不是完全限定的名称System.Collections.Generic.IEnumerable。您添加了对程序集的引用。是的,我肯定会使用Count(),感谢您的类似java的解释。那么您是说Linq没有扩展Linq.Dynamic有吗?“关于您得到的错误,如果您检查MSDN,IQueryable.Count扩展方法是System.Linq的一部分,因此我不确定添加System.Linq.Dynamic如何解决您的问题。可查询的计数方法(IQueryable)“我也不确定,但这就是解决方案。我检查了三次。谢谢你,这真的很有启发性。啊哈!!这让我坚持了大约一个小时。
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);
}
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;
}