Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用LINQ更新对象列表_Linq - Fatal编程技术网

使用LINQ更新对象列表

使用LINQ更新对象列表,linq,Linq,基本上,我将人员列表绑定到silverlight datagrid,第一行是id为1的主要人员,每列都有一个复选框,默认情况下,它们都被选中作为主要人员。第二行等等,不检查任何内容,场景是,如果用户不需要默认值,那么他们可以检查其他人的其他列,但一旦他们检查了其他列,则应自动取消检查主要人的列,反之亦然,这仅适用于同一列。示例第1列是年龄,第2列是姓名,默认情况下,会检查主要人员的年龄,如果我不喜欢这些数据,我可以检查任何其他人的年龄,而不检查主要人员的年龄。我亲自将复选框绑定到bool值。因此

基本上,我将人员列表绑定到silverlight datagrid,第一行是id为1的主要人员,每列都有一个复选框,默认情况下,它们都被选中作为主要人员。第二行等等,不检查任何内容,场景是,如果用户不需要默认值,那么他们可以检查其他人的其他列,但一旦他们检查了其他列,则应自动取消检查主要人的列,反之亦然,这仅适用于同一列。示例第1列是年龄,第2列是姓名,默认情况下,会检查主要人员的年龄,如果我不喜欢这些数据,我可以检查任何其他人的年龄,而不检查主要人员的年龄。我亲自将复选框绑定到bool值。因此,我需要一个方法,该方法接受捕获的行id和检查的属性的名称

   List<Person> l = new List<Person>();
        l.Add(new Person() { Id = 1, Age = 20, IsFirstNameSelected = false, IsLastNameSelected  = false });
        l.Add(new Person() { Id = 2, Age = 28, IsFirstNameSelected = true, IsLastNameSelected = true }); 
        l.Add(new Person() { Id = 3, Age = 22, IsFirstNameSelected = true, IsLastNameSelected = true });
List l=新列表();
l、 添加(newperson(){Id=1,Age=20,IsFirstNameSelected=false,IsLastNameSelected=false});
l、 添加(newperson(){Id=2,Age=28,IsFirstNameSelected=true,IsLastNameSelected=true});
l、 添加(newperson(){Id=3,Age=22,IsFirstNameSelected=true,IsLastNameSelected=true});
像这样的


我刚刚检查了对象是否是第一个,但您也可以应用其他条件

我不确定我是否正确理解了这个问题,但如果您的意思是,对于指定的个人ID,您希望更新
IsLastNameSelected
IsFirstNameSelected
的属性,以获得指定个人ID的相应属性的负数,则此操作将完成:

int id = 1; 

IEnumerable<Person> updatedList = 
    l.Select( person => new Person()
    {
        Id = person.Id,
        Age = person.Age,
        IsFirstNameSelected = person.Id == id ? person.IsFirstNameSelected : !(l.Single( p => p.Id == id).IsFirstNameSelected),
        IsLastNameSelected = person.Id == id ? person.IsLastNameSelected : !(l.Single( p => p.Id == id).IsLastNameSelected),            
    });
intid=1;
IEnumerable updatedList=
l、 选择(person=>newperson()
{
Id=person.Id,
年龄=人。年龄,
IsFirstNameSelected=person.Id==Id?person.IsFirstNameSelected:!(l.Single(p=>p.Id==Id).IsFirstNameSelected),
IsLastNameSelected=person.Id==Id?person.IsLastNameSelected:!(l.Single(p=>p.Id==Id).IsLastNameSelected),
});

您的问题是什么?你的解释使我困惑;-)@我对我的问题做了更多的解释,谢谢你的回答。我用解释编辑了我的问题。您的回复只接受ID,我需要一个接受ID和bool属性名称的方法。我的例子只显示了2个,但实际上我还有20个。
int id = 1; 

IEnumerable<Person> updatedList = 
    l.Select( person => new Person()
    {
        Id = person.Id,
        Age = person.Age,
        IsFirstNameSelected = person.Id == id ? person.IsFirstNameSelected : !(l.Single( p => p.Id == id).IsFirstNameSelected),
        IsLastNameSelected = person.Id == id ? person.IsLastNameSelected : !(l.Single( p => p.Id == id).IsLastNameSelected),            
    });