我有一个List<string>喜欢:
List<String> list = new List<String>{"6","1","2","4","6","5","1"};
Run Code Online (Sandbox Code Playgroud)
我需要将列表中的重复项目放入新列表中.现在我正在使用嵌套for循环来执行此操作.
结果list将包含{"6","1"}.
我有一个List<string>重复的单词.我需要找到所有重复的单词.
什么技巧让他们全部?
是的目的AsQueryable()只是让你可以围绕传递IEnumerable到所期望的方法IQueryable,或者是有一个有用的理由表示IEnumerable为IQueryable?例如,它应该是这样的情况:
IEnumerable<Order> orders = orderRepo.GetAll();
// I don't want to create another method that works on IEnumerable,
// so I convert it here.
CountOrders(orders.AsQueryable());
public static int CountOrders(IQueryable<Order> ordersQuery)
{
return ordersQuery.Count();
}
Run Code Online (Sandbox Code Playgroud)
或者它实际上是否使它做了不同的事情:
IEnumerable<Order> orders = orderRepo.GetAll();
IQueryable<Order> ordersQuery = orders.AsQueryable();
IEnumerable<Order> filteredOrders = orders.Where(o => o.CustomerId == 3);
IQueryable<Order> filteredOrdersQuery = ordersQuery.Where(o => o.CustomerId == 3);
// Are these executed in a different way?
int result1 = filteredOrders.Count(); …Run Code Online (Sandbox Code Playgroud) 要求:在未排序的列表中,确定是否存在重复项.我这样做的典型方法是n平方嵌套循环.我想知道其他人如何解决这个问题.Linq有一种优雅,高性能的方法吗?需要lambda或比较器的通用的东西会很好.
如何查找是否List<string>有重复值?
我试过下面的代码.有没有最好的方法来实现?
var lstNames = new List<string> { "A", "B", "A" };
if (lstNames.Distinct().Count() != lstNames.Count())
{
Console.WriteLine("List contains duplicate values.");
}
Run Code Online (Sandbox Code Playgroud) 我有:
List<string> list = new List<string>() { "a", "a", "b", "b", "r", "t" };
Run Code Online (Sandbox Code Playgroud)
我怎么才能得到"a","b"?
我试着这样做:
List<string> list = new List<string>() { "a", "a", "b", "b", "r", "t" };
List<string> test_list = new List<string>();
test_list = list.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)
现在test_list有{"a","b","r","t"}
然后:
test_list = test_list.Except(list).ToList();
Run Code Online (Sandbox Code Playgroud)
这是我的失败点,因为Except()删除了所有元素.
你能帮我解决一下吗?
如何在序列序列中找到2个或更多序列中出现的项集?
换句话说,我希望在传递的序列中至少有2个出现不同的值.
注意: 这不是所有序列的交叉,而是所有序列对的交叉的并集.
注2: 不包括序列与自身的对或2组合.那太傻了.
我自己做了一个尝试,
public static IEnumerable<T> UnionOfIntersects<T>(
this IEnumerable<IEnumerable<T>> source)
{
var pairs =
from s1 in source
from s2 in source
select new { s1 , s2 };
var intersects = pairs
.Where(p => p.s1 != p.s2)
.Select(p => p.s1.Intersect(p.s2));
return intersects.SelectMany(i => i).Distinct();
}
Run Code Online (Sandbox Code Playgroud)
但是我担心这可能是次优的,我认为它包括A,B和B对的交叉点,A似乎效率低下.我也认为可能有一种更有效的方法来复合集合,因为它们是迭代的.
我在下面包含一些示例输入和输出:
{ { 1, 1, 2, 3, 4, 5, 7 }, { 5, 6, 7 }, { 2, 6, 7, 9 } , { 4 } }
Run Code Online (Sandbox Code Playgroud)
回报
{ …Run Code Online (Sandbox Code Playgroud) 好的,所以这里有一些例外,我无法List<Dvd> Dvds = _dvds.ReadAll();在DvdController.cs中使用,如果dvd已在列表中,请检查它是否包含dvd信息。即使我确实这样做了,它也无法按我的预期工作。即使我检查该信息是否在列表中并尝试将其停止,它仍会将其添加到列表中。Dvd.cs确实将Id递增了一个。我想知道对此有什么解决方案?
DvdController.cs
...
private void CreateDvd() //Create
{
var myView = new DvdView();
var dvdInfos = myView.GetNewDvdInfo();
_dvds.Create(dvdInfos);
DisplayDvds();
}
...
Run Code Online (Sandbox Code Playgroud)
DvdRepository.cs
public class DvdRepository
{
private static List<Dvd> dvds = new List<Dvd>()
{
new Dvd("Batman", 2010, "Bruce", 4 ),
new Dvd("Superman", 2009, "John", 4),
new Dvd("Wonderwoman", 2012, "Omar", 4)
};
public Dvd Create(Dvd dvd)
{
if (dvds.Contains(dvd))
{
Console.WriteLine("duplicate"); //not working
}
else
dvds.Add(dvd);
return dvds.FirstOrDefault(d => d.Id == dvd.Id);
}
public List<Dvd> ReadAll() …Run Code Online (Sandbox Code Playgroud) 我有以下模型类:
public class DuplicateTags
{
public string VMName { set; get; }
public string shortName { set; get; }
}
Run Code Online (Sandbox Code Playgroud)
它的填充如下:
int tempindex = tempvmname.IndexOf('-');
duplicateTagsInDisplayName.Add(new DuplicateTags
{
VMName = tempvmname,
shortName = tempvmname.Substring(0, tempindex)
});
Run Code Online (Sandbox Code Playgroud)
现在我想显示具有重复shortName 的列表项?
所以这就是我希望我的输出看起来像:
How many numbers? 10
Give number 1: 1
Give number 2: 3
Give number 3: 1
Give number 4: 3
Give number 5: 4
Give number 6: 6
Give number 7: 4
Give number 8: 8
Give number 9: 2
Give number 10: 1
Number 1 appeared 3 times
Number 2 appeared 1 times
Number 3 appeared 2 times
Number 4 appeared 2 times
Number 6 appeared 1 times
Number 8 appeared 1 times
Run Code Online (Sandbox Code Playgroud)
问题是,我已经完成了读取用户输入的部分.但是,我不知道如何继续讲述每个数字出现次数的部分.
另外,我这样做是作为一项功课,所以大部分代码都是芬兰语.不过,我希望你仍能理解它.
using System;
namespace …Run Code Online (Sandbox Code Playgroud) 我有一个带元组的列表,其中包含两个字符串和一个int:
List<Tuple<string, string, int>> peopleList = new List<Tuple<string, string, int>>();
Run Code Online (Sandbox Code Playgroud)
该元组从查找到数据库,并使用带有名称,数字和整数列表的DataReader进行填充。
我想从列表中删除重复项并计算出整数。
我已经根据属性和重复项的总和查看了这个List Distinct条目 -这与我想要的最相似,但是我正在使用元组并努力了解如何删除重复项并正确添加数字。
var group = peopleList.GroupBy(x => x)
.Select(x => new { Name = x.Key.Item1, No = x.Key.Item2, Sum = x.Sum(g => g.Item3) });
Run Code Online (Sandbox Code Playgroud)
我希望得到一个包含所有人员及其对应的计数总和的列表。
所以:
James, 12, 5
Jerry, 15, 2
James, 12, 10
Helen, 87, 8
Jerry, 15, 8
Run Code Online (Sandbox Code Playgroud)
成为:
James, 12, 15
Jerry, 15, 10
Helen, 87, 8
Run Code Online (Sandbox Code Playgroud) c# ×11
linq ×7
list ×5
.net ×2
duplicates ×2
algorithm ×1
arrays ×1
generics ×1
ienumerable ×1
iqueryable ×1
tuples ×1