各位前辈,进来帮一下忙,谢谢

qq_33858579 2016-01-26 08:03:46
        public class aclass
{
public string Subject1;
public string Subject2;
public string Subject3;
public string Subject4;
public string Subject5;
public string Subject6;
public string Subject7;
public string Subject8;
public string Subject9;
public string Subject10;
}

public ObservableCollection<aclass> adata = new ObservableCollection<aclass>();

private void button_Click(object sender, RoutedEventArgs e)
{
adata.Add(new aclass()
{
Subject1 = "1",
Subject2 = "2",
Subject3 = "2",
Subject4 = "2",
Subject5 = "2",
Subject6 = "2",
Subject7 = "2",
Subject8 = "2",
Subject9 = "2",
Subject10 = "2",
});
}

10个字段(Subject1....),如果我想查找(adata)某个字段某行,然后修改里面的值,如何做,谢谢。
...全文
312 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33858579 2016-02-01
  • 打赏
  • 举报
回复
引用 12 楼 fate23409 的回复:

    public class aclass
    {
        public string Subject1;
        public string Subject2;
        public string Subject3;
        public string Subject4;
        public string Subject5;
        public string Subject6;
        public string Subject7;
        public string Subject8;
        public string Subject9;
        public string Subject10;

        private string[] ss = new string[8];

        public string this[int index]
        {
            get
            {
                return this.ss[index];
            }
            set
            {
                this.ss[index] = value;
            }
        }
    }
太棒了,12分感谢。
姓小名白丶 2016-01-29
  • 打赏
  • 举报
回复
建议你用数组或者集合的方式
lccleo 2016-01-29
  • 打赏
  • 举报
回复
http://blog.csdn.net/lyncai/article/details/41250809 不知道这个能不能帮到你
fate23409 2016-01-28
  • 打赏
  • 举报
回复

    public class aclass
    {
        public string Subject1;
        public string Subject2;
        public string Subject3;
        public string Subject4;
        public string Subject5;
        public string Subject6;
        public string Subject7;
        public string Subject8;
        public string Subject9;
        public string Subject10;

        private string[] ss = new string[8];

        public string this[int index]
        {
            get
            {
                return this.ss[index];
            }
            set
            {
                this.ss[index] = value;
            }
        }
    }
qq_33858579 2016-01-27
  • 打赏
  • 举报
回复
我必须使用ObservableCollection和自定义类,我能在自定义类里定义数组吗?如何定义
正怒月神 2016-01-27
  • 打赏
  • 举报
回复
改成泛型集合或者数组都可以,使用下标获取
FTD_Fred 2016-01-27
  • 打赏
  • 举报
回复
大家说的很对,你为啥不用数组……
D56233577 2016-01-27
  • 打赏
  • 举报
回复
引用 5 楼 qq_33858579 的回复:
引用 1 楼 D56233577 的回复:
先找到你要修改的对象再修改,比如下面的代码。
或者这样表述吧,当我输入Subject8时,我就在adata[0].Subject8处修改值,当我输入Subject10000000时,我就在adata[0].Subject10000000处修改值,如何做,谢谢
那你用 ObservableCollection和自定义类干嘛,用数组和DataTable不行么。
qq_33858579 2016-01-27
  • 打赏
  • 举报
回复
引用 10 楼 fate23409 的回复:
如果要达到 adata[行][列] 这样的效果,就得在自定义类里定义 索引:

    public class aclass
    {
        private List<string> list = new List<string>();
        //定义索引
        public string this[int index]
        {
            get
            {
                return this.list[index];
            }
            set
            {
                this.list[index] = value;
            }
        }

        public void Add(string item)
        {
            list.Add(item);
        }

        public void AddRange(IEnumerable<string> collection)
        {
            this.list.AddRange(collection);
        }
    }
然后调用的时候:

        public System.Collections.ObjectModel.ObservableCollection<aclass> adata = new System.Collections.ObjectModel.ObservableCollection<aclass>();

        private void button_Click(object sender, RoutedEventArgs e)
        {
            var data = new aclass();
            data.AddRange(new string[] { "1", "2", "3", "4", "5", "6", "7", "8" });
            adata.Add(data);

            adata[0][1] = "修改2";
        }
太感谢你了,完全解决了我的问题,最后问一下,如果定义数组的话,行不行
  

        public class aclass
        {
            public string Subject1;
            public string Subject2;
            public string Subject3;
            public string Subject4;
            public string Subject5;
            public string Subject6;
            public string Subject7;
            public string Subject8;
            public string Subject9;
            public string Subject10;

            public string[] ss= new string [2];

            public void tt(string e1,string e2)
            {

                ss[0] = e1;
                ss[1] = e2;

            }
        }
 
        public ObservableCollection<aclass> adata = new ObservableCollection<aclass>();
 
        private void button_Click(object sender, RoutedEventArgs e)
        {
            for(int i=0;i<2;i++)
            {
            adata.Add(new aclass()
            {
                Subject1 = "1",
                Subject2 = "2",
                Subject3 = "2",
                Subject4 = "2",
                Subject5 = "2",
                Subject6 = "2",
                Subject7 = "2",
                Subject8 = "2",
                Subject9 = "2",
                Subject10 = "2",
            });
        }
adata[0].tt("初始化1","初始化2");
adata[1].tt("初始化1","初始化2");

adata[0].ss[0]="修改1";

}
      
这样写有没有问题,好象我感觉不对劲,如何把get,set加进去,能不能帮我改进下,
qq_33858579 2016-01-27
  • 打赏
  • 举报
回复
引用 1 楼 D56233577 的回复:
先找到你要修改的对象再修改,比如下面的代码。
        private void button_Click(object sender, RoutedEventArgs e)
        {
            adata.Add(new aclass()
            {
                Subject1 = "1",
                Subject2 = "2",
                Subject3 = "2",
                Subject4 = "2",
                Subject5 = "2",
                Subject6 = "2",
                Subject7 = "2",
                Subject8 = "2",
                Subject9 = "2",
                Subject10 = "2",
            });

            adata[0].Subject1 = "修改1";
            foreach (var item in adata)
            {
                item.Subject1 = "修改2";
            }
            adata.Where(c => c.Subject2 == "2").ToList().ForEach((o) => { o.Subject1 = "修改3"; });
        }
或者这样表述吧,当我输入Subject8时,我就在adata[0].Subject8处修改值,当我输入Subject10000000时,我就在adata[0].Subject10000000处修改值,如何做,谢谢
qq_33858579 2016-01-27
  • 打赏
  • 举报
回复
引用 1 楼 D56233577 的回复:
先找到你要修改的对象再修改,比如下面的代码。
        private void button_Click(object sender, RoutedEventArgs e)
        {
            adata.Add(new aclass()
            {
                Subject1 = "1",
                Subject2 = "2",
                Subject3 = "2",
                Subject4 = "2",
                Subject5 = "2",
                Subject6 = "2",
                Subject7 = "2",
                Subject8 = "2",
                Subject9 = "2",
                Subject10 = "2",
            });

            adata[0].Subject1 = "修改1";
            foreach (var item in adata)
            {
                item.Subject1 = "修改2";
            }
            adata.Where(c => c.Subject2 == "2").ToList().ForEach((o) => { o.Subject1 = "修改3"; });
        }
可我并不清楚程序要对Subject1还是Subject2的值进行修改,所以我不能用adata[0].Subject1 这个方式进行修改,我必须要让程序自己确定行和列。这个表述不知清不清楚,就如adata[行][列]这种方式吧,就是我希望行和列能让程序自己确定,而不是adata[0].Subject1 ,谢谢D56233577
fate23409 2016-01-27
  • 打赏
  • 举报
回复
如果要达到 adata[行][列] 这样的效果,就得在自定义类里定义 索引:

    public class aclass
    {
        private List<string> list = new List<string>();
        //定义索引
        public string this[int index]
        {
            get
            {
                return this.list[index];
            }
            set
            {
                this.list[index] = value;
            }
        }

        public void Add(string item)
        {
            list.Add(item);
        }

        public void AddRange(IEnumerable<string> collection)
        {
            this.list.AddRange(collection);
        }
    }
然后调用的时候:

        public System.Collections.ObjectModel.ObservableCollection<aclass> adata = new System.Collections.ObjectModel.ObservableCollection<aclass>();

        private void button_Click(object sender, RoutedEventArgs e)
        {
            var data = new aclass();
            data.AddRange(new string[] { "1", "2", "3", "4", "5", "6", "7", "8" });
            adata.Add(data);

            adata[0][1] = "修改2";
        }
  • 打赏
  • 举报
回复
如果你的概念中就是“1、2、3、4.....”这种下标索引,而并不需要区分没一个属性名称,那么你应该定义一个数组。 建议你学一点数据结构知识。
  • 打赏
  • 举报
回复
数据结构知识很重要。不要只是知道 string 这一种结构。
D56233577 2016-01-26
  • 打赏
  • 举报
回复
先找到你要修改的对象再修改,比如下面的代码。
        private void button_Click(object sender, RoutedEventArgs e)
        {
            adata.Add(new aclass()
            {
                Subject1 = "1",
                Subject2 = "2",
                Subject3 = "2",
                Subject4 = "2",
                Subject5 = "2",
                Subject6 = "2",
                Subject7 = "2",
                Subject8 = "2",
                Subject9 = "2",
                Subject10 = "2",
            });

            adata[0].Subject1 = "修改1";
            foreach (var item in adata)
            {
                item.Subject1 = "修改2";
            }
            adata.Where(c => c.Subject2 == "2").ToList().ForEach((o) => { o.Subject1 = "修改3"; });
        }

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧