在List <object> </object>中搜索对象

时间:2014-04-06 09:05:31

标签: c# list

我的List包含Story类的实例:

List<Story> Stories = new List<Story>();

public class Story
{
    public string Id { get; set; }
    public double Height { get; set; }
    public double Elevation { get; set; }
}

列表中的每个实例都是唯一的:

Stories = {Story1, Story2, ...}

现在在另一种方法中,我想在Story中搜索特定的List并将整个对象分配给新创建的对象

Story st = Find a Story in the Stories that its Story.Id=="Story2"

我该怎么做?

3 个答案:

答案 0 :(得分:2)

您可以使用任何方法语法的LINQ:

Story st = Stories.Where(x => x.Id == "Story2").FirstOrDefault();

或查询语法:

Story st = (from story in Stories
              where story.Id.Equals("Story2")
              select story).FirstOrDefault();

您可以在声明末尾使用Single()First()FirstOrDefault()SingleOrDefault。这是他们之间的差异。

  • First() - 如果空/未找到则抛​​出,如果重复则抛出
  • FirstOrDefault() - 如果为空/未找到则返回默认值,如果重复则不返回
  • Single() - 如果空/未找到则抛​​出,如果存在重复则抛出
  • SingleOrDefault() - 如果为空/未找到则返回默认值,如果存在重复则返回

答案 1 :(得分:1)

因为&#34;列表中的每个实例都是唯一的&#34;

Story st = Stories.FirstOrDefault(x=>x.Id == "Story2");

可选地

Story st = Stories.Single(x=>x.Id == "Story2");

不同之处在于,如果没有找到,第一个将返回默认值,第二个将在这种情况下引发异常

答案 2 :(得分:1)

使用LINQ:

var story = stories.Where((p) => p.Id == "Goldilocks").FirstOrDefault();