首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#读取数据库写文本ID相同行联接

2013-12-04 
C#读取数据库写文本ID相同行连接读取的数据库结构如下(数据库中大概有7万条数据):1a11a21a32b13c13c2写入

C#读取数据库写文本ID相同行连接
读取的数据库结构如下(数据库中大概有7万条数据):
1  a1
1  a2
1  a3
2  b1
3  c1
3  c2
写入文本的格式如下:
1  a1  a2  a3
2  b1
3  c1  c2

请问牛牛们,我该怎么做
[解决办法]

DataClasses1DataContext db = new DataClasses1DataContext();
foreach(int key in db.Attendances.Select(s => s.LocationId).Distinct()
{
   Console.Write(key);
   foreach(string text in db.Attendances.Where(s => s.LocationId == key).Select(s => s.Text))
   {
       Console.Write(text);
   }
}


用的是LinQ to SQL
[解决办法]
这个最好是在数据库里面处理好一次性返回,如果数据库是sql2000那么要用函数处理.如果是sql2005以上,可以用pivot分析函数处理
[解决办法]
sql 2000返回数据示例:

create table tb(id int ,context varchar(10))
insert into tb
select 1,'a1'
union all select 1,'a2'
union all select 1,'a3'
union all select 2,'b1'
union all select 3,'c1'
union all select 3,'c2'
go

create function dbo.fn_b(@id int)
returns varchar(1000)
as 
begin
declare @s varchar(1000)
set @s=''
select @s=@s+' '+context from tb where id=@id
return (@s)
end
go

select id,dbo.fn_b(id) as context
from tb
group by id


/*
id    context
---------------------------
1 a1 a2 a3
2 b1
3 c1 c2
*/

[解决办法]
http://hi.baidu.com/cookiemulan/item/9a43507cb406bb3d70442329
[解决办法]
  class Program
    {
        static void Main(string[] args)
        {

            List<Entity> list = new List<Entity>();
            list.Add(new Entity(1, "a1"));
            list.Add(new Entity(1, "a2"));
            list.Add(new Entity(1, "a3"));
            list.Add(new Entity(1, "a4"));
            list.Add(new Entity(2, "b1"));
            list.Add(new Entity(2, "b2"));
            list.Add(new Entity(2, "b3"));
            list.Add(new Entity(2, "b4"));
            list.Add(new Entity(2, "b5"));
            list.Add(new Entity(3, "c1"));
            list.Add(new Entity(3, "c2"));
            list.Add(new Entity(3, "c3"));
            list.Add(new Entity(4, "d1"));
            list.Add(new Entity(4, "d2"));
            list.Add(new Entity(5, "e1"));


            var results = from c in list
                          group c by c.Id into g
                          select new { key = g.Key, value = string.Join(",", g.Distinct()) };
            foreach (var item in results)


            {
                Console.WriteLine(item.key + item.value);
            }

            Console.Read();
        }


        public class Entity
        {

            public Entity(int Id, string value)
            {
                this.Id = Id;
                this.Value = value;
            }

            private int _id;

            public int Id
            {
                get { return _id; }
                set { _id = value; }
            }


            private string _value;

            public string Value
            {
                get { return _value; }
                set { _value = value; }
            }

            public override string ToString()
            {
                return this.Value.ToString();
            }
        }

    }
[解决办法]
最后得加一个列转行的方法吧
[解决办法]

热点排行