我有一个包含我的UserProfile
表的Id的列表.如何UserProfiles
根据我在var
使用中获得的Id列表选择所有内容LINQ
?
var idList = new int[1, 2, 3, 4, 5];
var userProfiles = _dataContext.UserProfile.Where(......);
Run Code Online (Sandbox Code Playgroud)
我被困在这里.我可以使用for循环等来做到这一点.但我宁愿这样做LINQ
.
我有一个小的字节列表,我想测试它们都是不同的值.例如,我有这个:
List<byte> theList = new List<byte> { 1,4,3,6,1 };
Run Code Online (Sandbox Code Playgroud)
检查所有值是否相同的最佳方法是什么?
假设我有一个来自表的列值的列表,如何删除空字符串和重复值.请参阅以下代码:
List<string> dtList = dtReportsList.AsEnumerable().Select(dr => dr.Field<string>("column1")).ToList();
Run Code Online (Sandbox Code Playgroud)
这就是我刚刚编写的内容,但是Amiram的代码更优雅,所以我会选择答案就是这样做:
DataTable dtReportsList = someclass.GetReportsList();
if (dtReportsList.Rows.Count > 0)
{
List<string> dtList = dtReportsList.AsEnumerable().Select(dr => dr.Field<string>("column1")).ToList();
dtList.RemoveAll(x=>x == "");
dtList = dtList.Distinct().ToList();
rcboModule.DataSource = dtList;
rcboModule.DataBind();
rcboModule.Items.Insert(0, new RadComboBoxItem("All", "All"));
}
Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用Linq和Lambda Operations,我需要根据类的两个属性对List进行排序.因此,我使用了OrderBy().ThenBy()方法如下:
class ValueWithIndex{
public long Value;
public int Index;
}
...
List<ValueWithIndex> valuesWithIndex = new List<ValueWithIndex>();
for (int i = 0; i < A.Length; i++){
ValueWithIndex vi = new ValueWithIndex();
vi.Value = A[i];
vi.Index = i;
valuesWithIndex.Add(vi);
}
var orderedValues = valuesWithIndex.OrderBy(v => v.Value).ThenBy(v => v.Index);
...
Run Code Online (Sandbox Code Playgroud)
在这个答案中,我们解释说,OrderBy()使用Quicksort,因此即使它具有O(N*logN)平均时间复杂度,对于最坏的情况,时间复杂度约为O(N 2).如果ThenBy()方法的时间复杂度最差为O(N 2),那么使用这些方法毫无意义.
ThenBy()方法也使用Quicksort吗?如果是,那是否意味着对于相同的"v.Value","v.Index"会被排序为O(N 2)最差的时间复杂度?
我想检查一些字符串是否有无效字符.对于无效字符,我的意思是不应该存在的字符.这些是什么角色?这是不同的,但我认为那不重要,重要的是我应该怎么做以及最简单和最好的方法(性能)呢?
假设我只想要包含'A-Z','空','.','$','0-9'的字符串
所以,如果我有一个字符串,如" HELLO STaCKOVERFLOW "=>无效,因为'a'.好的,现在该怎么做?我可以创建一个List<char>
并将不允许的每个字符放入其中并使用此列表检查字符串.也许不是一个好主意,因为那时有很多字符.但我可以制作一个包含所有允许的字符的列表吗?然后?对于字符串中的每个字符我都要比较List<char>
?任何智能代码?还有一个问题:如果我要添加AZ,List<char>
我必须手动添加25个字符,但这些字符就像我在ASCII表中知道65-90,我可以更容易地添加它们吗?有什么建议?谢谢
我想按字词排序C#列表.假设我有一个C#列表(对象),其中包含以下单词:
[{id:1, name: "ABC"},
{id:2, name: "XXX"},
{id:3, name: "Mille"},
{id:4, name: "YYY"},
{id:5, name: "Mill",
{id:6, name: "Millen"},
{id:7, name: "OOO"},
{id:8, name: "GGGG"},
{id:9, name: null},
{id:10, name: "XXX"},
{id:11, name: "mil"}]
Run Code Online (Sandbox Code Playgroud)
如果用户Mil
作为搜索键传递,我想返回以搜索键开头的所有单词,然后返回与条件不匹配的所有单词并按字母顺序排序.
我能想到的最简单的方法是在结果集上运行for循环,将所有以search键开头的单词放入一个列表中,并将重命名的单词放入另一个列表中.对第二个列表进行排序,然后将它们组合在一起以返回结果.
我想知道是否有更聪明或内置的方式来获得理想的结果.
任何人都知道Distinct()
方法中使用的算法的大O ,有自定义IEqualityComparer
吗?
我有两个清单:
List<string> _list1;
List<string> _list2;
Run Code Online (Sandbox Code Playgroud)
我需要在_list1上添加所有_list2不同的项目...
我怎么能用LINQ做到这一点?
谢谢
我有一个叫Customer
有几个字符串属性的类
firstName, lastName, email, etc.
Run Code Online (Sandbox Code Playgroud)
我从一个csv
创建该类数组的文件中读取客户信息:
Customer[] customers
Run Code Online (Sandbox Code Playgroud)
我需要删除具有相同电子邮件地址的重复客户,每个特定电子邮件地址只留下1个客户记录.
我使用2个循环完成了这项工作,但由于通常有50,000多个客户记录,因此需要将近5分钟.完成删除重复项后,我需要将客户信息写入另一个csv文件(此处无需帮助).
如果我Distinct
在循环中执行了一个循环,那么如何删除作为该特定客户的类的一部分的其他字符串变量?
谢谢,安德鲁
我正在使用OrderBy方法对10,000个元素的Dictionary进行排序,如下所示,并想知道它的大O. 有人知道吗?在对它们进行排序后,我将按顺序将它们添加到新的字典中.可能有更好的方法,但它适用于我的目的.
这是我的例子:
m_sortedItems = new Dictionary<int,string>();
foreach(KeyValuePair<int,string> item in collection.OrderBy(key => key.Value)){
m_sortedItems.Add(item.Key, item.Value);
}
Run Code Online (Sandbox Code Playgroud)
我检查了msdn但它没有列出:http: //msdn.microsoft.com/en-us/library/bb534966.aspx
c# ×10
linq ×6
big-o ×3
.net ×2
sorting ×2
arrays ×1
asp.net ×1
c#-4.0 ×1
char ×1
class ×1
coding-style ×1
dictionary ×1
duplicates ×1
lambda ×1
list ×1