我写了这个:
public static class EnumerableExtensions
{
public static int IndexOf<T>(this IEnumerable<T> obj, T value)
{
return obj
.Select((a, i) => (a.Equals(value)) ? i : -1)
.Max();
}
public static int IndexOf<T>(this IEnumerable<T> obj, T value
, IEqualityComparer<T> comparer)
{
return obj
.Select((a, i) => (comparer.Equals(a, value)) ? i : -1)
.Max();
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道它是否已经存在,是吗?
我是Linq的新手.我有一个Customers table.ID,FullName,Organization,Location是列.我在Sqlite中有一个查询,返回2500条客户记录.我必须从该结果集中找到ID = 150的客户索引.它是一个客户列表.查询的结果集按组织排序.我尝试使用FindIndex和IndexOf但是前者得到错误而后者得到-1.那么,应该怎么做呢?谢谢.
是否有可能使用查询语言编写此...而不是方法链?
notifications.Where((n, index) => n.EventId == m_lastSelectedEventID)
.Select((n, index) => new {Position = index}).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
谢谢,拉杜
我有一个名为"汽车"的字符串数组
我想得到数组的第一个索引是null,或者存储的值是空的.这是我到目前为止所得到的:
private static string[] Cars;
Cars = new string[10];
var result = Cars.Where(i => i==null || i.Length == 0).First();
Run Code Online (Sandbox Code Playgroud)
但是如何获得这种情况的第一个INDEX?
例如:
Cars[0] = "Acura";
Run Code Online (Sandbox Code Playgroud)
那么索引应该返回1作为数组中的下一个可用点.
我有一个文件名集合,其中一部分路径名是一个特定的单词.我可以点这样的集合:
var files = from f in checkedListBox1.CheckedItems.OfType<string>()
orderby f.Substring(0,3)
select f;
Run Code Online (Sandbox Code Playgroud)
但是现在,我想在路径名部分按字母顺序排序,而是根据另一个集合给出的特定顺序排序.
所以我们说路径名部分可以是"ATE","DET"和"RTI".我有另一个字符串集合:{"DET","ATE","RTI"}我想用来对文件名进行排序,以便在排序后,文件名首先显示其部分名称为"DET",然后是"ATE" ,然后"RTI".我如何实现这一点 - >需要使用自己的比较器?
我的清单中有5个数据。
我的清单
所以我想知道,我如何选择ID的行号?
var MyProductId= 135;
var SelectedDataRowNumber = context.SP_MyList.ToList()
.Where(s=>s.Id==MyProductId)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
例如,“我的列表”有5个数据,如下所示,
Id-Name
6,Computer
135,KeyBoard
68,Mouse
98,Telephone
213,Laptop,
Run Code Online (Sandbox Code Playgroud)
MyProductId是135因此它与配衬是Keyboard.It行计数数(指数)必须是“1”,因为0是计算机。
如何获得选定的ID的行数(索引)号?
我目前有一个名为Week的对象.一周是Season对象的一部分.这个季节可以包含很多周.我想要做的是找到我周的位置(是本赛季的第一周(所以#1)还是第二周(所以#2).
int i = 0;
foreach ( var w in Season.Weeks.OrderBy(w => w.WeekStarts)){
if(w.Id == Id){
return i;
}
i+=1;
}
Run Code Online (Sandbox Code Playgroud)
目前这就是我所拥有的.我按照开始日期在一秒钟内订购周,以确保它们的顺序正确.然后我循环使用它们直到找到与我目前正在查看的那一周相匹配的那一周.并返回我一直在计算的int ..
我觉得应该有一个更简单的linq方式来做到这一点,因为它感觉非常混乱!
在下面的代码中,我正在检查某个项目是否存在于 an 中ObservableCollection,如果存在,我想获取它的索引,以便我可以将该项目移动到顶部,但我无法弄清楚。
我的对象:
public class RecentFile
{
public string FileName { get; set; }
public string DateAdded { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
用于查找项目索引的代码:
if (recentFilesObservableCollection.Any(f => f.FileName == "MyFileName")) {
foreach (RecentFile file in recentFilesObservableCollection) {
if (file.FileName == "MyFileName") {
var x = RecentFilesDataGrid[(recentFilesObservableCollection.IndexOf(file)];
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果项目存在,获取索引号的最佳方法是什么?
最终我需要做的是......
说我有一个Point:
public class Point
{
double X, Y;
}
Run Code Online (Sandbox Code Playgroud)
我想得到List<Point>满足条件的元素索引,例如,Point.X里面有最大值List<Point>.
我如何使用LINQ表达式执行此操作?
我试图找到索引如下.
但是下面的LINQ说没有扩展FindIndex.
foreach (var distinctClassId in distinctClassIds)
{
var indexes = classComponents.Where(x=> x.ClassId.Equals(distinctClassId)).
FindIndex(x => x.Id == Constants.Classes.ClassID.ToString() ||
x.Id == Constants.Courses.CoursesID.ToString());
}
Run Code Online (Sandbox Code Playgroud)