我的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"
我该怎么做?
答案 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();