我在动态LINQ 的VS2008示例中找到了一个示例,它允许您使用类似sql的字符串(例如,OrderBy("Name, Age DESC"))用于排序.不幸的是,包含的方法仅适用于IQueryable<T>;.有没有办法获得此功能IEnumerable<T>?
我上课Items了properties (Id, Name, Code, Price).
列表中Items填充了重复的项目.
例如:
1 Item1 IT00001 $100
2 Item2 IT00002 $200
3 Item3 IT00003 $150
1 Item1 IT00001 $100
3 Item3 IT00003 $150
Run Code Online (Sandbox Code Playgroud)
如何使用linq删除列表中的重复项?
我在字符串中有"按属性排序"的名称.我将需要使用Lambda/Linq对对象列表进行排序.
例如:
public class Employee
{
public string FirstName {set; get;}
public string LastName {set; get;}
public DateTime DOB {set; get;}
}
public void Sort(ref List<Employee> list, string sortBy, string sortDirection)
{
//Example data:
//sortBy = "FirstName"
//sortDirection = "ASC" or "DESC"
if (sortBy == "FirstName")
{
list = list.OrderBy(x => x.FirstName).toList();
}
}
Run Code Online (Sandbox Code Playgroud)
LINQ,我在网站上提出了很多问题.我提出的问题范围广泛而且多种多样,往往背后没有太多背景.因此,为了巩固我在Linq上获得的知识,我发布了这个问题,以便在我继续学习LINQ时使用其他信息来维护和更新它.
我也希望它能够成为想要了解LINQ的其他人的有用资源.
来自MSDN:
LINQ项目是.NET Framework的一组扩展的代号,包含语言集成的查询,设置和转换操作.它使用本机语言语法扩展C#和Visual Basic,并提供类库以利用这些功能.
这意味着LINQ提供了一种使用通用语法查询各种数据源的标准方法.
目前,Microsoft提供了一些不同的LINQ提供程序:
还有很多其他的,其中许多列在这里.
Chook提供了一种输出CSV文件的方法
Jeff显示了如何从数组中删除重复项
Bob 从数据表中获取一个不同的有序列表
Marxidad显示了如何对数组进行排序
Dana获得了使用Linq实现快速排序的帮助
GateKiller的问题链接摘要如下:
Scott Guthrie 在他的博客上为Linq提供了一个介绍MSDN
上LINQ的概述
ChrisAnnODell建议退房:
使用C#编译器查询理解功能,您可以编写如下代码:
var names = new string[] { "Dog", "Cat", "Giraffe", "Monkey", "Tortoise" };
var result =
from animalName in names
let nameLength = animalName.Length
where nameLength > 3
orderby nameLength
select animalName;
Run Code Online (Sandbox Code Playgroud)
在上面的查询表达式中,let关键字允许将值传递给where和orderby操作,而无需重复调用animalName.Length.
什么是LINQ扩展方法调用的等效集合,它实现了"let"关键字在这里的作用?
我有一份清单orders.
我想orders根据一组订单状态进行选择.
所以基本上 select orders where order.StatusCode in ("A", "B", "C")
// Filter the orders based on the order status
var filteredOrders = from order in orders.Order
where order.StatusCode.????????("A", "B", "C")
select order;
Run Code Online (Sandbox Code Playgroud) 我经常看到人们使用Where.FirstOrDefault()搜索并抓住第一个元素.为什么不用Find()?对方是否有优势?我无法区分.
namespace LinqFindVsWhere
{
class Program
{
static void Main(string[] args)
{
List<string> list = new List<string>();
list.AddRange(new string[]
{
"item1",
"item2",
"item3",
"item4"
});
string item2 = list.Find(x => x == "item2");
Console.WriteLine(item2 == null ? "not found" : "found");
string item3 = list.Where(x => x == "item3").FirstOrDefault();
Console.WriteLine(item3 == null ? "not found" : "found");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud) 如果我有一个类似于以下的类:
public class Item
{
public int ClientID { get; set; }
public int ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这些物品的集合......
List<Item> items = getItems();
Run Code Online (Sandbox Code Playgroud)
如何使用LINQ返回具有最高ID的单个"Item"对象?
如果我这样做:
items.Select(i => i.ID).Max();
Run Code Online (Sandbox Code Playgroud)
我只会得到最高的ID,当我真正想要返回的是具有最高ID的Item对象本身?我希望它返回一个"Item"对象,而不是int.
根据我从SelectMany的文档中理解,可以使用它来生成1-many关系的(扁平化)序列.
我有以下课程
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
class Order
{
public int Id { get; set; }
public int CustomerId { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用查询表达式语法来使用它们
var customers = new Customer[]
{
new Customer() { Id=1, Name ="A"},
new Customer() { Id=2, Name ="B"},
new Customer() { Id=3, Name ="C"}
};
var orders = new Order[]
{
new Order …Run Code Online (Sandbox Code Playgroud) 我有以下字典:
Dictionary<int,string> dic = new Dictionary<int,string>();
dic[1] = "A";
dic[2] = "B";
Run Code Online (Sandbox Code Playgroud)
我想过滤字典的项目并将结果重新分配给同一个变量:
dic = dic.Where (p => p.Key == 1);
Run Code Online (Sandbox Code Playgroud)
如何将结果作为字典从同一类型[ <int,string>]返回?
我试过ToDictionary,但它不起作用.
提前致谢.
linq ×10
linq-to-objects ×10
c# ×9
dictionary ×1
exists ×1
generic-list ×1
lambda ×1
linq-to-sql ×1
list ×1