日期:2014-05-18  浏览次数:20843 次

请问,这个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();