读书人

请教这个Linq查询语句如何写

发布时间: 2012-06-11 17:42:22 作者: rapoo

请问,这个Linq查询语句怎么写
List<string> list1 = new List<string>{"张三","李四","张三","王二","小王","小仓","张三","小刘"}


把集合list1中,等于"张三"的元素的索引值,全部装进一个集合,如果行的话,最好还是用list1,把list1清空,把索引值ToString()装进去即可。如果不行,就另外新建一个集合

[解决办法]

C# code
var result = list1.Select((n, i) => new { name = n, index = i }).Where(x => x.name == "张三").Select(x => x.index).ToList();
[解决办法]
C# code
 List<string> list1 = new List<string> { "张三", "李四", "张三", "王二", "小王", "小仓", "张三", "小刘" };                var name=from m in list1                          where m=="张三"                         select m;                list1 = name.ToList();
[解决办法]
C# code
            List<string> list1 = new List<string> { "张三", "李四", "张三", "王二", "小王", "小仓", "张三", "小刘" };            list1 = list1.Select((s, index) => new { s, sindex = index.ToString() }).Where(v => v.s == "张三").Select(x => x.sindex.ToString()).ToList();
[解决办法]
探讨
如果行的话,最好还是用list1,把list1清空,把索引值ToString()装进去即可

[解决办法]
探讨

引用:

引用:
如果行的话,最好还是用list1,把list1清空,把索引值ToString()装进去即可

为了节省不靠谱的空间,宁愿浪费时间?

重新声明一个List<int>,才是又快又好的方法。

我主要是想学一下Linq查询,我想请问一下,你这个写法:
var result = list1.Select((n, i) => new ……

[解决办法]
这是因为 Select() 方法的一个重载形式就是接受一个 Func<T, int, TOut> 的参数,并且自动将当前元素和序号作为参数传给它。
[解决办法]
探讨
C# code
List<string> list1 = new List<string> { "张三", "李四", "张三", "王二", "小王", "小仓", "张三", "小刘" };
var name=from m in list1
where m=="张三"
……

[解决办法]
如果觉得(n,i)不好读,其实可以写成非常简单的类似于sql的形式:
C# code
var index = 0;var result = (from x in list1                let ndx = index++                where x == "张三"                select ndx).ToList();
[解决办法]

List<string> list1 = new List<string> { "张三", "李四", "张三", "王二", "小王", "小仓", "张三", "小刘" };
List<string> list2 = list1.Where(t => t.Trim() == "张三").ToList();

读书人网 >C#

热点推荐