0

我在互联网上到处找。我发现人们使用 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.Collections.Generic.List' C:\Users\cding\Documents\Visual Studio 2010\Projects\ConsoleApplication6\EZP.Album.Data\PhotoAlbumDA.cs 22 39 EZP.Album 。数据

我想我知道这给我一个错误的原因,但我不知道如何解决它。我只是想在数据库中搜索与某个名称匹配的任何 PhotoAlbum 对象。

编辑:新问题:您如何使用 Where<> 搜索与其部分匹配的内容?

例如:

用户想搜索:搞笑

然后我的搜索功能将返回任何包含“funny”一词的内容,例如funnygirls、funnydogs、funnypeople、funnybikes 等...

我实现了 Where<>,但我没有执行上述功能?有任何修复吗?或任何替代品?

4

4 回答 4

2

您需要使用 where 代替:

db.PhotoAlbums.Where(b => b.NAME == inputName)

在调用其他方法之前也不要使用 ToList ,它将整个表移动到应用程序的内存中。

于 2012-09-17T15:54:23.587 回答
1

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");
于 2012-09-17T15:54:30.900 回答
1

我只是想在数据库中搜索与某个名称匹配的任何 PhotoAlbum 对象。

你为什么要使用任何?任何将返回一个布尔值,数据库中是否有任何与此匹配的内容?可以这样想:

任何:我列表中的任何内容与此匹配吗?

哪里:给我列表中与此匹配的任何内容。

我认为您实际上想要在哪里:

db.PhotoAlbums.Where(b => b.NAME == inputName).ToList();
于 2012-09-17T15:54:48.713 回答
0

这应该工作

List<PhotoAlbum> albums = db.PhotoAlbums.Where(b => b.NAME == inputName).ToList();
于 2012-09-17T15:55:32.853 回答