Tag: linq

为什么使用.AsEnumerable()而不是转换为IEnumerable <T>?

IEnumerable<T>的扩展方法之一是.AsEnumerable() 。 这个方法将它被调用的枚举对象转换成一个IEnumerable<T>的实例。 但是,由于对象必须实现IEnumerable<T>才能应用于此扩展方法,因此转换为IEnumerable<T>是一个简单的转换为IEnumerable<T>的事情。 我的问题是为什么这个方法存在? 例: List<string> strings = new List<string>() { "test", "test2", "test3" }; IEnumerable<string> stringsEnum1 = strings.AsEnumerable(); IEnumerable<string> stringsEnum2 = (IEnumerable<string>)strings; 在上面的例子中, stringsEnum1和stringsEnum2是等价的。 扩展方法的要点是什么? 编辑 :作为一个推论,为什么有一个.AsQueryable()方法时投掷到IQueryable<T>是等价的?

用LINQ查询DataColumnCollection

我试图在DataTable的Columns属性上执行一个简单的LINQ查询: from c in myDataTable.Columns.AsQueryable() select c.ColumnName 但是,我得到的是这样的: 找不到源types“System.Linq.IQueryable”的查询模式的实现。 “select”未find。 考虑明确指定范围variables“c”的types。 我怎样才能让DataColumnCollection和LINQ一起玩呢?

我怎样才能过滤使用LINQ的字典,并将其返回到相同types的字典

我有以下字典: Dictionary<int,string> dic = new Dictionary<int,string>(); dic[1] = "A"; dic[2] = "B"; 我想过滤字典的项目,并将结果重新分配给相同的variables: dic = dic.Where (p => p.Key == 1); 我怎样才能返回结果作为一个字典从相同的types[ <int,string> ]? 我尝试过ToDictionary ,但它不起作用。 提前致谢。

LINQ – 将列表转换为值为列表的字典

我有一个 List<MyObject> 我从数据库中检索。 不过,我希望它通过MyObject中的一个属性来进行分组。 LINQ将我的列表转换为以下的最佳方式是: Dictionary<long, List<MyObject>> 我有以下几点: myObjectList.ToDictionary(x => x.KeyedProperty) 但它返回: Dictionary<long, MyObject>

我怎样才能sortinggenerics列表DESC和ASC?

我怎样才能sortinggenerics列表DESC和ASC? 用LINQ和没有LINQ? 我正在使用VS2008。 class Program { static void Main(string[] args) { List<int> li = new List<int>(); li.Add(456); li.Add(123); li.Add(12345667); li.Add(0); li.Add(1); li.Sort(); foreach (int item in li) { Console.WriteLine(item.ToString() + "\n"); } Console.ReadKey(); } }

检查列表是否包含包含string的元素并获取该元素

在search这个问题的答案时,我遇到了使用LINQ的类似的问题,但我还没有能够完全理解它们(因此,实现它们),因为我不熟悉它。 我想基本上是这样的: 检查列表中的任何元素是否包含特定的string。 如果有,请获取该元素。 我真的不知道如何去做这件事。 我能想出的是这个(当然不工作): if (myList.Contains(myString)) string element = myList.ElementAt(myList.IndexOf(myString)); 我知道为什么它不工作: myList.Contains()不返回true ,因为它将检查列表的整个元素是否与我指定的string匹配。 myList.IndexOf()将不会查找出现,因为它再次是这样,它将检查匹配string的元素。 不过,我不知道如何解决这个问题,但我想我将不得不使用类似的问题build议使用LINQ。 这就是说,如果是这种情况,我想让回答者向我解释在他们的例子中使用LINQ(正如我所说的,在我用C#的时候,我没有打扰过它)。 提前谢谢你(和加尔斯?)。 编辑:我想出了一个解决scheme; 只是遍历列表,检查当前元素是否包含string,然后设置一个string等于当前元素。 我想知道,有没有比这更有效的方法? string myString = "bla"; string element = ""; for (int i = 0; i < myList.Count; i++) { if (myList[i].Contains(myString)) element = myList[i]; }

如何将SQL中的多个内部连接转换为LINQ?

我已经掌握了LINQ到SQL的基本知识,但是我一直在努力让JOIN正常工作。 我想知道如何将以下转换为LINQ到SQL(理想情况下使用方法链,因为这是我的首选格式)。 SELECT c.CompanyId, c.CompanyName, p.FirstName + ' ' + p.LastName as AccountCoordinator, p2.FirstName + ' ' + p2.LastName as AccountManager FROM dbo.Companies c INNER JOIN dbo.Persons p ON c.AccountCoordinatorPersonId = p.PersonId INNER JOIN dbo.Persons p2 ON c.AccountManagerPersonId = p2.PersonId

LINQ:确定两个序列是否包含完全相同的元素

我需要确定两组是否包含完全相同的元素。 sorting并不重要。 例如,这两个数组应该被认为是相等的: IEnumerable<int> data = new []{ 3,5,6,9 }; IEnumerable<int> otherData = new []{ 6,5,9,3} 一组不能包含任何元素,不在其他。 这可以使用内置的查询操作符来完成吗? 考虑到元素的数量可以从几个到几百个,那么实现它的最有效的方法是什么呢?

Linq中有多个WHERE子句

我是LINQ的新手,想知道如何执行多个where子句。 这是我想实现的:通过筛选出某些用户名来返回logging。 我试了下面的代码,但没有按预期工作。 DataTable tempData = (DataTable)grdUsageRecords.DataSource; var query = from r in tempData.AsEnumerable() where ((r.Field<string>("UserName") != "XXXX") || (r.Field<string>("UserName") != "XXXX")) select r; DataTable newDT = query.CopyToDataTable(); 我在这里先向您的帮助表示感谢!!!

在Linq中实现“MinOrDefault”的最好方法是什么?

我从linqexpression式产生一个十进制值列表,我想要最小的非零值。 然而linqexpression式完全可能会导致一个空的列表。 这将引发一个例外,并且没有MinOrDefault来应付这种情况。 decimal result = (from Item itm in itemList where itm.Amount > 0 select itm.Amount).Min(); 如果列表为空,那么将结果设置为0的最好方法是什么?