标签: linq

使用LINQ连接字符串

写老派最有效的方法是什么:

StringBuilder sb = new StringBuilder();
if (strings.Count > 0)
{
    foreach (string s in strings)
    {
        sb.Append(s + ", ");
    }
    sb.Remove(sb.Length - 2, 2);
}
return sb.ToString();
Run Code Online (Sandbox Code Playgroud)

......在LINQ?

c# linq string-concatenation

333
推荐指数
12
解决办法
27万
查看次数

将Linq查询结果转换为字典

我想使用Linq to SQL向数据库添加一些行,但我想在添加行之前进行"自定义检查",以了解是否必须添加,替换或忽略进行的行.我希望尽可能降低客户端和数据库服务器之间的流量,并尽量减少查询次数.

为此,我希望获取验证所需的信息,并且只需要在流程开始时获取一次.

我在考虑做这样的事情,但很明显,它不起作用.有人有想法吗?

Dictionary<int, DateTime> existingItems = 
    (from ObjType ot in TableObj
        select (new KeyValuePair<int, DateTime>(ot.Key, ot.TimeStamp))
    )
Run Code Online (Sandbox Code Playgroud)

我最后想要的是一个Dictionary,而不必从TableObject下载整个ObjectType对象.

我还考虑了以下代码,但我试图找到一个正确的方法:

List<int> keys = (from ObjType ot in TableObj orderby ot.Key select ot.Key).ToList<int>();
List<DateTime> values = (from ObjType ot in TableObj orderby ot.Key select ot.Value).ToList<int>();
Dictionary<int, DateTime> existingItems = new Dictionary<int, DateTime>(keys.Count);
for (int i = 0; i < keys.Count; i++)
{
    existingItems.Add(keys[i], values[i]);
}
Run Code Online (Sandbox Code Playgroud)

c# linq todictionary linq-to-sql

327
推荐指数
3
解决办法
31万
查看次数

使用Newtonsoft将JSON反序列化为.NET对象(或者LINQ to JSON可能?)

我知道有一些关于Newtonsoft的帖子,所以希望这不是一个重复......我正在尝试将Kazaa的API返回的JSON数据转换成某种形状的好对象

WebClient client = new WebClient();
Stream stream = client.OpenRead("http://api.kazaa.com/api/v1/search.json?q=muse&type=Album");
StreamReader reader = new StreamReader(stream);

List<string> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(reader.Read().ToString());

foreach (string item in list)
{
    Console.WriteLine(item);
}

//Console.WriteLine(reader.ReadLine());
stream.Close();
Run Code Online (Sandbox Code Playgroud)

那个JsonConvert系列只是我最近尝试过的一个......我不太了解它并且希望通过问你们来消除一些步法.我原本试图将它转换为字典或其他东西......实际上,我只需要在那里获取一些值,因此根据文档来判断,也许Newtonsoft的LINQ to JSON可能是更好的选择?思考/链接?

以下是JSON返回数据的示例:

{
  "page": 1,
  "total_pages": 8,
  "total_entries": 74,
  "q": "muse",
  "albums": [
    {
      "name": "Muse",
      "permalink": "Muse",
      "cover_image_url": "http://image.kazaa.com/images/69/01672812 1569/Yaron_Herman_Trio/Muse/Yaron_Herman_Trio-Muse_1.jpg",
      "id": 93098,
      "artist_name": "Yaron Herman Trio"
    },
    {
      "name": "Muse",
      "permalink": "Muse",
      "cover_image_url": "htt p://image.kazaa.com/images/54/888880301154/Candy_Lo/Muse/Candy_Lo-Muse_1.jpg",
      "i d": 102702,
      "artist_name": "\u76e7\u5de7\u97f3"
    },
    {
      "name": "Absolution",
      "permalink": " Absolution",
      "cover_image_url": …
Run Code Online (Sandbox Code Playgroud)

c# linq json json.net deserialization

310
推荐指数
8
解决办法
65万
查看次数

如何使用LINQ获取索引?

给定像这样的数据源:

var c = new Car[]
{
  new Car{ Color="Blue", Price=28000},
  new Car{ Color="Red", Price=54000},
  new Car{ Color="Pink", Price=9999},
  // ..
};
Run Code Online (Sandbox Code Playgroud)

如何用LINQ 找到满足一定条件的第一辆车的索引

编辑:

我可以想到这样的东西,但它看起来很糟糕:

int firstItem = someItems.Select((item, index) => new    
{    
    ItemName = item.Color,    
    Position = index    
}).Where(i => i.ItemName == "purple")    
  .First()    
  .Position;
Run Code Online (Sandbox Code Playgroud)

用一个普通的循环解决这个问题会是最好的吗?

.net c# linq c#-3.0

306
推荐指数
6
解决办法
33万
查看次数

当结果为空时,LINQ会返回什么

我有一个关于LINQ查询的问题.通常,查询返回一个IEnumerable<T>类型.如果返回为空,则不确定它是否为null.我不确定如果在结果中找不到任何内容,以下ToList()是否会抛出异常或只是空?List<string>IEnumerable

   List<string> list = {"a"};
   // is the result null or something else?
   IEnumerable<string> ilist = from x in list where x == "ABC" select x;
   // Or directly to a list, exception thrown?
   List<string> list1 = (from x in list where x == "ABC" select x).ToList();
Run Code Online (Sandbox Code Playgroud)

我知道这是一个非常简单的问题,但我暂时没有VS可用.

c# linq

298
推荐指数
7
解决办法
16万
查看次数

C#LINQ在List中查找重复项

使用LINQ,从a List<int>,如何检索包含重复多次的条目及其值的列表?

linq list duplicate-removal

293
推荐指数
6
解决办法
23万
查看次数

你会如何使用LINQ进行"不在"查询?

我有两个集合,Email在两个集合中都有属性.我需要获取第一个列表中Email第二个列表中不存在的项目列表.使用SQL我只会使用"not in",但我不知道LINQ中的等价物.怎么做的?

到目前为止,我有一个加入,像......

var matches = from item1 in list1
join item2 in list2 on item1.Email equals item2.Email
select new { Email = list1.Email };
Run Code Online (Sandbox Code Playgroud)

但我不能加入,因为我需要差异,加入会失败.我需要一些使用Contains或Exists的方法我相信.我还没有找到一个例子来做到这一点.

c# linq

291
推荐指数
8
解决办法
31万
查看次数

为什么ReSharper告诉我"隐式捕获关闭"?

我有以下代码:

public double CalculateDailyProjectPullForceMax(DateTime date, string start = null, string end = null)
{
    Log("Calculating Daily Pull Force Max...");

    var pullForceList = start == null
                             ? _pullForce.Where((t, i) => _date[i] == date).ToList() // implicitly captured closure: end, start
                             : _pullForce.Where(
                                 (t, i) => _date[i] == date && DateTime.Compare(_time[i], DateTime.Parse(start)) > 0 && 
                                           DateTime.Compare(_time[i], DateTime.Parse(end)) < 0).ToList();

    _pullForceDailyMax = Math.Round(pullForceList.Max(), 2, MidpointRounding.AwayFromZero);

    return _pullForceDailyMax;
}
Run Code Online (Sandbox Code Playgroud)

现在,我在ReSharper建议改变的行上添加了评论.这是什么意思,或者为什么需要改变?implicitly captured closure: end, start

c# linq resharper

291
推荐指数
3
解决办法
7万
查看次数

在LINQ中展平列表

我有一个LINQ查询返回IEnumerable<List<int>>但我只想返回List<int>所以我想将我的所有记录合并到我IEnumerable<List<int>>只有一个数组.

示例:

IEnumerable<List<int>> iList = from number in
    (from no in Method() select no) select number;
Run Code Online (Sandbox Code Playgroud)

我想把我的所有结果IEnumerable<List<int>>都只拿到一个List<int>

因此,从源数组:[1,2,3,4]和[5,6,7]

我只想要一个阵列[1,2,3,4,5,6,7]

谢谢

c# linq list

288
推荐指数
5
解决办法
10万
查看次数

使用linq删除列表中的重复项

我上课Itemsproperties (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删除列表中的重复项?

c# linq linq-to-objects generic-list

282
推荐指数
8
解决办法
26万
查看次数