我在互联网上到处找。我发现人们使用Entity的框架与数据库进行通信。这个框架中有一个名为Any<>的函数它模仿了Contains()SQL方法。我尝试实现ANY<>方法,但不起作用。它不断给我转换类型的错误。
所以我的问题是。。。实现ANY<>的正确方法是什么作用希望某位大师能尽快回答。提前感谢!
-所以只是为了一些上下文,我有这样的东西:
public static List<PhotoAlbumDto> searchAlbumsFromDA(string inputName)
{
EzPrintsEntities db = new EzPrintsEntities();
List<PhotoAlbum> albums = db.PhotoAlbums.ToList().Any(b => b.NAME == inputName);
}
第二个赞会给我一个:
错误14无法将类型"bool"隐式转换为"System"。集合。通用的列出"C:\Users\cding\Documents\Visual Studio 2010\Projects\ConsoleApplication6\EZP"。专辑数据\ PhotoAlbumDA.cs 22 39 EZP。专辑数据
我想我知道这会给我带来错误的原因,但我不知道如何修复它。我只是想在数据库中搜索与某个名称匹配的相册对象。
编辑:新问题:如何使用Where<>去寻找与它的一部分相匹配的东西?
例如:
用户想搜索:有趣的
然后我的搜索功能将返回任何包含"有趣"一词的内容,如funnygirls、funnydogs、funnypeople、funnybikes等。
我实现了Where<>,但是我不做上面的功能?有什么修复方法吗?或者任何替代方案?
您需要使用where来代替:
db.PhotoAlbums.Where(b => b.NAME == inputName)
在调用其他方法之前也不要使用ToList,它会将整个表移动到应用程序的内存中。
我只是想在数据库中搜索任何相册对象与某个名称匹配。
为什么要使用?Any将返回的布尔值为。数据库中是否有与此匹配的内容?这样想:
阿妮:我的单子里有和这个匹配的吗?
Where:给我列表中与此匹配的任何内容。
我想你实际上想去哪里:
db.PhotoAlbums.Where(b => b.NAME == inputName).ToList();
Any()与实体框架无关。
Any()是一个LINQ扩展方法,它试图告诉您集合中是否存在a)任何对象,或者b)集合中是否有任何符合条件的反对意见。
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.any.aspx
你可能在追求"Where()",而不是Any()。Any返回一个布尔值,Where()将返回另一个符合您传入的条件的集合。
使用Any的正确方式如下:
List<string> listOfCars = new List<string>() { "Yellow Car", "Blue Car", "Big Car" };
bool hasYellowCar = listOfCars.Any(c => c == "Yellow Car");
这应该能在中工作
List<PhotoAlbum> albums = db.PhotoAlbums.Where(b => b.NAME == inputName).ToList();