你如何实现Any<>在数据库中找到一些东西(最好不区分大小写)?

时间:2012-09-17 15:52:07

标签: c# sql-server-2008 entity-framework

我在互联网上到处都是。我发现人们使用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.Data

我想我知道为什么这会给我一个错误,但我不知道如何修复它。我只是想在数据库中搜索与某个名称匹配的任何PhotoAlbum对象。

编辑:新问题:你如何使用Where&lt;&gt;搜索与其中一部分匹配的内容?

例如:

用户想要搜索:搞笑

然后我的搜索功能会返回任何带有“搞笑”字样的内容,例如funnygirls,funnydogs,funnypeople,funnybikes等......

我实现了Where&lt;&gt;,但我没有执行上述功能?有没有修复?或任何替代品?

4 个答案:

答案 0 :(得分:2)

你需要在以下地方使用:

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

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

答案 1 :(得分:1)

任何()与实体框架无关。

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");

答案 2 :(得分:1)

  

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

你为什么要使用任何?任何会返回一个布尔值,数据库中有什么东西匹配这个吗?可以这样想:

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

地点:在我的列表中给我任何与此匹配的内容。

我认为你实际上想要的地方:

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

答案 3 :(得分:0)

这应该有效

List<PhotoAlbum> albums = db.PhotoAlbums.Where(b => b.NAME == inputName).ToList();