如何实现 Any<> 以在数据库中查找某些内容(最好不区分大小写)?



我在互联网上到处找。我发现人们使用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();

最新更新